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

5

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

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

为了获得输出:
>>>a
25, 2, 49,90,24, 9

对我来说,b 是否是普通列表或者 numpy 数组都无关紧要。我看到了很多类似的问题,但它们都是根据索引或元素删除数组元素,如果使用 np.setdiff1d 删除它们,则列表会因此被排序。 我想知道是否有任何 numpy 方法可以让我执行类似于 np.setdiff1d 的操作,但不会对数组进行排序。 如果没有,是否有其他方法可以删除这些元素,因为我对 numpy 不太熟悉。 预先感谢。

1个回答

6

只需使用argwhere()方法找到'b'中存在于'a'中的值的索引,使用isin()方法检查'b'中的值是否存在于'a'中:

indices=np.argwhere(np.isin(a,b))

最后,通过使用delete()方法来删除这些值:

a=np.delete(a,indices)

现在,如果你打印a,你会得到你想要的输出:

array([25,  2, 49, 90, 24,  9])

@YashvanderBamel 一切都错了... 如果你不知道 b 中的值在 a 中的位置,那么你怎么能删除它呢? - Anurag Dabas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接