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

时间:2014-12-03 10:38:26

标签: python numpy

我一直在经历几个解决方案,但我无法找到我需要的解决方案。

我有两个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长度相同的布尔数组,其中x的元素位于y,否则为False。但是我如何使用它,如果不是任何其他方法来获取我的final_x

3 个答案:

答案 0 :(得分:3)

如果你确实有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])

答案 1 :(得分:2)

只需将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])

答案 2 :(得分:0)

您可以使用内置集:

final_x = set(x) - set(y)

并从第一个中减去第二个。如果您有这种倾向,可以将final_x转换为listnumpy.array