如果存在于另一个数组中,则从一个数组中删除元素,保留重复项 - NumPy / Python

我有两个数组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循环的情况下做到这一点,因为它是一个冗长的数组,因此需要很长时间才能循环。


小唯快跑啊
浏览 387回答 3
3回答

扬帆大鱼

我对 numpy 不是很熟悉,但是如何使用集合:C = set(A.flat) - set(B.flat)编辑:从评论来看,集合不能有重复的值。所以另一种解决方案是使用 lambda 表达式:C = np.array(list(filter(lambda x: x not in B, A)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python