使用 numpy setdiff1d 保持顺序

CYC*_*CYC 6 python numpy

a = np.array([1, 2, 3])
b = np.array([4, 2, 3, 1, 0])
c = np.setdiff1d(b, a)
print("c", c)
Run Code Online (Sandbox Code Playgroud)

结果是,c [0, 4]但我想要的答案是c [4 0]

我怎样才能做到这一点?

Div*_*kar 7

获取不匹配的掩码np.in1d并简单地将布尔索引放入b以保留其中元素的顺序 -

b[~np.in1d(b,a)]
Run Code Online (Sandbox Code Playgroud)

示例分步运行 -

In [14]: a
Out[14]: array([1, 2, 3])

In [15]: b
Out[15]: array([4, 2, 3, 1, 0])

In [16]: ~np.in1d(b,a)
Out[16]: array([ True, False, False, False,  True], dtype=bool)

In [17]: b[~np.in1d(b,a)]
Out[17]: array([4, 0])
Run Code Online (Sandbox Code Playgroud)