根据另一个数组的元素从 numpy 数组中删除元素

use*_*030 5 python arrays numpy

我将如何根据另一个数组的内容从数组中删除元素,例如:

a = np.array([25, 2, 49, 3,90, 24, 45, 23, 9])
b = [3,45,23]
...
Run Code Online (Sandbox Code Playgroud)

为了获得输出:

>>>a
25, 2, 49,90,24, 9
Run Code Online (Sandbox Code Playgroud)

b 是常规列表还是 numpy 数组对我来说并不重要。我见过很多类似的问题,但它们都根据索引删除数组元素,或者如果它们确实根据元素删除数组元素,则列表会作为结果进行排序,例如使用 np.setdiff1d 。我想知道是否有任何 numpy 方法可以让我执行类似于 np.setdiff1d 的操作,但无需对数组进行排序。如果没有,还有另一种方法可以删除元素,因为我不熟悉 numpy。提前致谢

Anu*_*bas 6

只需使用argwhere()方法来查找“a”中存在的“b”值的索引,并isin()使用方法检查“b”内的值是否存在于“a”中:-

indices=np.argwhere(np.isin(a,b))
Run Code Online (Sandbox Code Playgroud)

最后只需使用delete()方法删除这些值:-

a=np.delete(a,indices)
Run Code Online (Sandbox Code Playgroud)

现在,如果您打印,a您将得到所需的输出:-

array([25,  2, 49, 90, 24,  9])
Run Code Online (Sandbox Code Playgroud)