基于所有行值的numpy过滤

时间:2019-03-02 22:49:55

标签: python numpy

我正在尝试使用另一个2D numpy数组值过滤2D numpy数组。像这样:

array1 = np.array([[ 0,  0],
                   [86,  4],
                   [75, 74],
                   [78, 55],
                   [53, 94],
                   [49, 83],
                   [99, 75],
                   [99, 10],
                   [32,  4],
                   [55, 99],
                   [62, 95],
                   [ 0,  0]])
array2 = np.array([[55, 99],
                   [32,  4],
                   [75, 74]])
array1[np.isin(array1, array2[2:5]).all(axis=1) == 0]

我的理想输出将是array1的过滤版本,该版本的行不等于array2切片中的行。 问题是当我这样做时:

np.isin(array1, array[2:5])

输出为:

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

它错误地将[99,75]行归类为[True,True],因为这两个值分别存在于我们的array2中。 是否有更正确的方法基于行的所有值进行过滤?

1 个答案:

答案 0 :(得分:0)

这是使用np.all()执行此操作的效率低下但非常明确的方法:

Sub generateHTML()

    Dim hyp As String
    Dim html As String

    hyp = ActiveWorkbook.FullName

    html = "<a href= " & hyp & " >Link to file</a>"

    Debug.Print html

End Sub