【问题标题】:How to compare 2-number elements in an array with a 2-number list to generate a boolean-type array?如何将数组中的 2 位数元素与 2 位数列表进行比较以生成布尔型数组?
【发布时间】:2018-10-22 11:21:46
【问题描述】:

例如

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]) 当然我可以 ravel c 并使用 if(c[i]==1)&(c[i+1]==1) 给出“True”,

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)

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

【问题讨论】:

    标签: python numpy multidimensional-array boolean


    【解决方案1】:
    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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      相关资源
      最近更新 更多