代码之家  ›  专栏  ›  技术社区  ›  OrganicMustard

比较两个bolean数组

  •  0
  • OrganicMustard  · 技术社区  · 5 年前
    a = np.array(['numeric','string','numeric'])
    b = np.array(['numeric','string','numeric','numeric','string'])
    

    我试着比较两个数组a和b。

    我想得到这样的东西: array([ True, True, True]) 因为前三个元素是相同的。

    我知道我可能会截断最大的数组以便比较它们:

    if len(a)-len(b)<0:
        b = np.array(b[0:len(a)-len(b)])
    
    if len(a)-len(b) > 0:
        a = np.array(a[0:len(b)-len(a)])  
    
    b==a
    

    或

    if len(a)-len(b)<0:
        b = b[0:len(a)]
    else:
        a = a[0:len(b)]
    a==b
    

    但我想知道是否有一个内置的numpy函数可以做到这一点,而不必截断它们。

    1 回复  |  直到 5 年前
        1
  •  1
  •   LPR    5 年前

    内置函数,我不确定,但这里有一个快速解决方案:

    import numpy as np
    a = np.array(['numeric','string','numeric'])
    b = np.array(['numeric','string','numeric','numeric','string'])
    c = np.array([i == j for i, j in zip(a, b)])
    print(c)
    
    Out: [True,  True,  True]
    

    不过要注意的是,这是一个列表或1D数组的解决方案。如果您计划使用二维阵列执行此操作,则需要不同的解决方案。