我有一个 numpy 数组
array = np.array([5,100,100,100,5,5,100,100,100,5])
我创建一个带有布尔索引的掩码,如下所示:
mask = (array < 30)
这给出了一个像
[ True False False False True True False False False True]
True
我可以得到掩码中的值的索引
indices = np.where(mask)[0]
这给
[0 4 5 9]
对于掩码中的每个True
值,我想将接下来的 2 个元素也修改为True
.
我可以用这样的for
循环来做到这一点:
for i in indices:
mask[i:i+3] = True
在不使用循环的情况下,是否有更 numpythonic 的方法for
?
所需的掩码输出:
[ True True True False True True True True False True]
这里的主要优先事项是性能。