在Julia 1.1中删除向量中所有重复的元素

时间:2019-07-16 23:29:14

标签: julia

我正在尝试编写代码,以删除Vector中所有重复的元素。我该怎么做?

我已经尝试使用uniqueunion,但它们都删除了所有重复的项目,但1除外。我希望全部删除。

例如:让x = [1,2,3,4,1,6,2]。使用unionunique返回[1,2,3,4,6]。我想要的结果是[3,4,6]

1 个答案:

答案 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中出现的次数。然后,可以从字典中提取每个keyval的{​​{1}}的字典,即1的所有元素都出现一次。

在某些情况下,使用x然后为仅发生一次的已排序sort!(x)的元素构造一个索引可能会更快,但这将使编码以及输出更加混乱将按照您可能不需要的排序顺序。 x方法保留原始顺序。