我有两个数组A(len 为 380 万)和B(len 为 20k)。对于最小的例子,让我们来看这个案例:A = np.array([1,1,2,3,3,3,4,5,6,7,8,8])
B = np.array([1,2,8])现在我希望结果数组是:C = np.array([3,3,3,4,5,6,7])即,如果在B中找到任何值,则将A其从中删除A,如果没有则保留。我想知道是否有任何方法可以在没有for循环的情况下做到这一点,因为它是一个冗长的数组,因此需要很长时间才能循环。
3 回答

扬帆大鱼
TA贡献1799条经验 获得超9个赞
我对 numpy 不是很熟悉,但是如何使用集合:
C = set(A.flat) - set(B.flat)
编辑:从评论来看,集合不能有重复的值。
所以另一种解决方案是使用 lambda 表达式:
C = np.array(list(filter(lambda x: x not in B, A)))
添加回答
举报
0/150
提交
取消