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。提前致谢
只需使用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)