我不确定如何实现以下目标(最好没有循环)。 我有一个尺寸为100 * 100 * 3的numpy阵列A.
我还有一个具有相同尺寸(100 * 100 * 3)的numpy数组M. M实际上是一个掩码,对于大多数对(i,j),M [i,j]是[0,0,0],但是对于一些对(i,j),它不等于[0,0,0]
我想做的是以下内容:
A[i,j] = M[i,j] when M[i,j] != [0,0,0]
A[ M != [0,0,0]] = M [ M != [0,0,0]]
似乎无法发挥作用。
如何通过numpy有效地完成这项工作?
答案 0 :(得分:0)
您需要在最后一个轴上查找ALL
匹配,并将该掩码用于boolean-indexing/masking
-
mask = ~(M==0).all(-1) # or (M!=0).any(-1)
A[mask] = M[mask]
或使用np.where
-
mask = ~(M==0).all(-1,keepdims=1)
Aout = np.where(mask, M, A)