我有两个400k元素范围内的大型1d numpy数组。我需要检查数组A中的每个元素是否存在于数组B中。我使用了in1d
,但它似乎太慢了,需要很多时间。我想知道是否有任何方法可以加快速度?
A = np.array([1,2,3,4,5,6,7])
B = np.array([3,4,7])
result = np.in1d(A, B, invert=True)
result
>> array([ True, True, False, False, True, True, False]
答案 0 :(得分:3)
尝试将B转换为更适合搜索的结构(哈希集或排序集)
答案 1 :(得分:1)
我更喜欢pandas
来完成这项任务:
import pandas as pd
A, B = pd.DataFrame(A), pd.DataFrame(B)
A.merge(B, on=0, how="left", indicator=True)
>>> 0 _merge
0 1 left_only
1 2 left_only
2 3 both
3 4 both
4 5 left_only
5 6 left_only
6 7 both