gpt4 book ai didi

vector - 向量中元素出现的次数 [JULIA]

转载 作者:行者123 更新时间:2023-12-02 03:27:04 25 4
gpt4 key购买 nike

我有一个由 2500 个值组成的向量,其中包含重复值和 NaN 值。我想删除所有 NaN 值并计算每个其他值出现的次数。

y
2500-element Array{Int64,1}:
8
43
NaN
46
NaN
8
8
3
46
NaN

例如: 8 出现的次数是 346 出现的次数是 243 出现的次数是 1。

最佳答案

要删除 NaN 值,您可以使用过滤函数。来自 Julia 文档:

filter(function, collection)

Return a copy of collection, removing elements for which function is false.

x = filter(y->!isnan(y),y)
filter!(y->!isnan(y),y)

因此,我们创建条件 !isnan(y) 作为我们的函数,并使用它来过滤数组 y (注意,我们也可以编写 filter(z->!isnan(z),y) 使用 z 或我们选择的任何其他变量,因为 filter 的第一个参数只是定义一个内联函数)。请注意,我们可以将其保存为新对象,也可以使用由 ! 指示的就地修改版本,以便简单地修改现有对象 y

然后,在此之前或之后,根据我们是否要在计数中包含 NaN,我们可以使用 StatsBase 中的 countmap() 函数。来自 Julia 文档:

countmap(x)

Return a dictionary mapping each unique value in x to its number of occurrences.

using StatsBase
a = countmap(y)

然后您可以访问该字典的特定元素,例如a[-1] 会告诉您 -1

出现了多少次

或者,如果您想将该字典转换为数组,您可以使用:

b = hcat([[key, val] for (key, val) in a]...)'

注意:感谢 @JeffBezanon 对过滤 NaN 值的正确方法的评论。

关于vector - 向量中元素出现的次数 [JULIA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39101839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com