数组/numpy中的子字符串项


org = [1,1,1,1,2,2,4]
remove = [1,1,2]
result = foo(org, remove)
# result = [1,1,2,4]
# two 1 are removed and one 2

我想从org中删除项目,但不是所有项目都具有相同的值-只删除remove阵列中的每个项目一个

有numpy函数可以这样做吗?

根据CJR的评论,发现内置的Counter理解减法和"做正确的事";。它默默地忽略第一个计数器中不存在的任何元素。

所以你可以这样做:

from collections import Counter
c1 = Counter(org)
c2 = Counter(remove)
result = list((c1 - c2).elements())

给出CCD_ 4。

编辑:当然,这不一定会保留订单。如果你知道这两个集合在一开始就已经排序了,那么就会有一个更有效的方法。

最新更新