我正在尝试编写代码,以删除Vector中所有重复的元素。我该怎么做?
我已经尝试使用unique
和union
,但它们都删除了所有重复的项目,但1除外。我希望全部删除。
例如:让x = [1,2,3,4,1,6,2]
。使用union
或unique
返回[1,2,3,4,6]
。我想要的结果是[3,4,6]
。
答案 0 :(得分:3)
有很多方法可以解决这个问题。一种相当简单并且可能相当快的方法是使用countmap
中的StatsBase
:
using StatsBase
function f1(x)
d = countmap(x)
return [ key for (key, val) in d if val == 1 ]
end
或单线:
[ key for (key, val) in countmap(x) if val == 1 ]
countmap
创建一个字典,将x
中的每个唯一值映射到其在x
中出现的次数。然后,可以从字典中提取每个key
到val
的{{1}}的字典,即1
的所有元素都出现一次。
在某些情况下,使用x
然后为仅发生一次的已排序sort!(x)
的元素构造一个索引可能会更快,但这将使编码以及输出更加混乱将按照您可能不需要的排序顺序。 x
方法保留原始顺序。