如何组合多个numpy面具

时间:2013-03-22 20:24:18

标签: python numpy

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

注意,此示例导致错误

1 个答案:

答案 0 :(得分:18)

您正在使用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被评估为Falsem2也是如此),因此掩码为Falsedata[False] = data[0] = 10