m1 = [0,1,1,3]
m2 = [0,0,1,1]
data = [10,20,30,40]
我想做这样的事情:
mask = (m1 == 1) & (m2 == 1)
data[mask] #should return 30
注意,这个例子会导致错误
最佳答案
您正在使用 python 列表而不是 numpy 数组。试试这个:
import numpy as np
m1 = np.array([0,1,1,3])
m2 = np.array([0,0,1,1])
mask = (m1 == 1) & (m2 == 1)
data[mask]
# returns array([30])
在您的示例中,当 m1
是一个列表时,m1 == 1
被评估为 False
(与 m2 相同
),因此掩码为 False
且 data[False] = data[0] = 10
。
关于python - 如何组合多个numpy掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579260/