繁体   English   中英

比较两个numpy数组并删除元素

[英]Comparing two numpy arrays and removing elements

我一直在研究几种解决方案,但找不到所需的解决方案。

我有两个numpy数组。 让我们在这里一个小例子

x = [1,2,3,4,5,6,7,8,9]
y = [3,4,5]

我想比较x和y,并删除那些在y中的x值。

所以我希望我的final_x是

final_x = [1,2,6,7,8,9]

我发现np.in1d返回一个与x长度相同的布尔数组,它是True,其中x的元素在y ,否则为False。 但是,如果没有其他方法,该如何使用它来获取我的final_x

如果确实有numpy数组,则可以使用numpy.setdiff1d ,如下所示

import numpy as np

x = np.array([1,2,3,4,5,6,7,8,9])
y = np.array([3,4,5])

z = np.setdiff1d(x, y)
# array([1, 2, 6, 7, 8, 9])

只需将np.in1d返回的布尔数组的取反版本np.in1d给数组x

>>> x = np.array([1,2,3,4,5,6,7,8,9])
>>> y = [3,4,5]
>>> x[~np.in1d(x, y)]
array([1, 2, 6, 7, 8, 9])

您可以使用内置集:

final_x = set(x) - set(y)

并从第一个减去第二个。 如果您final_x ,可以将final_x转换为listnumpy.array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM