如何从掩码数组的索引获取二维数组的索引

How to get indices of a 2D array from index of the masked array

我需要在掩码数组的索引上循环的二维数组的原始索引。我试试:

for i in range(Arr[mask].size):
    tmp = numpy.zeros(mask.shape, dtype=bool)
    tmp[mask][i] = True
    j,k = numpy.where(tmp)
    ...

不幸的是,最后一行returns

(array([], dtype=int64), array([], dtype=int64))   

求j和k的好方法是什么?

由于它是一个二维数组,您可以简单地遍历掩码而不是遍历掩码数组:

for j, k in zip(*np.where(mask)):
    value = Arr[j,k]
    # ...

如果您还想获取当前(屏蔽)值的数量:

for i, (j, k) in enumerate(zip(*np.where(mask))):
    value = Arr[j,k]
    # ...