使用numpy测试来自一个数组的每个元素是否存在于另一个数组中的最有效方法

时间:2014-04-04 11:53:37

标签: python numpy

我想知道确定1-d numpy数组中的元素是否存在于另一个数组中的最有效方法。

具体来说,我有两个numpy 1-d阵列。第一个是未排序的整数数组。第二个是目标值的排序数组。

示例输入:

[45982, 124, 12, 1092, 45982, 1, 985, 299, 10092] # array 1

[1, 12, 299] # array 2

预期输出(即数组2中的数组1元素):

[False, False, True, False, False, True, False, True, False]

实际数组会更长:数组1可能包含> 5,000,000个元素,数组2可能包含500,000到1,000,000个元素。

1 个答案:

答案 0 :(得分:4)

也许np.in1d

>>> xs = np.array([45982, 124, 12, 1092, 45982, 1, 985, 299, 10092])
>>> ys = np.array([1, 12, 299])
>>> np.in1d(xs, ys)
array([False, False,  True, False, False,  True, False,  True, False], dtype=bool)