我一直在经历几个解决方案,但我无法找到我需要的解决方案。
我有两个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
。
答案 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
转换为list
或numpy.array
。