如何将数组中的2个数字元素与2个数字列表进行比较以生成布尔型数组?

时间:2018-05-12 03:17:09

标签: python numpy multidimensional-array boolean

例如

a = np.array(([0, 0], [0, 1], [1, 0], [1, 1]))
c = np.array(a == [0, 1])

通过这种方式我得到了

`array([[ True, False],
        [ True, True],
        [False, False],
        [False,  True]])`

但我想得到 array([False, True, False, False]) 当然我可以拉扯c并使用if(c[i]==1)&(c[i+1]==1)给出“真实”,

c = c.ravel()
cshape = list(c.shape)
del cshape[-1]  
d = [] 
for i in range(0, len(c), 2):
    if (c[i]==1)&(c[i + 1]==1):
        d.append(True)
    else: 
        d.append(False)
d = np.array(d).reshape(cshape)

但是对于大型系统来说,这可能是资源成本。 有什么简单的方法吗?

1 个答案:

答案 0 :(得分:0)

In [1]: a = np.array(([0, 0], [0, 1], [1, 0], [1, 1]))
In [2]: a==np.array([0,1])
Out[2]: 
array([[ True, False],
       [ True,  True],
       [False, False],
       [False,  True]])

只需检查一行中的所有元素是否为True

In [3]: _.all(axis=1)
Out[3]: array([False,  True, False, False])