gpt4 book ai didi

python - 如何在 Julia 中组合 countmap 和 proportionmap?

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:57 26 4
gpt4 key购买 nike

countmap可以整理列表中项目的计数:

import StatsBase: countmap, proportionmap, addcounts!
a = [1,2,3,4,1,2,2,3,1,2,5,7,4,8,4]
b = [1,2,5,3,1,6,1,6,1,2,6,2]
x, y = countmap(a), countmap(b)

[输出]:

(Dict(7=>1,4=>3,2=>4,3=>2,5=>1,8=>1,1=>3),Dict(2=>3,3=>1,5=>1,6=>3,1=>4))

我可以将原始列表中的计数添加到 countmap 字典中:

z = addcounts!(x, b)

[输出]:

Dict{Int64,Int64} with 8 entries:
7 => 1
4 => 3
2 => 7
3 => 3
5 => 2
8 => 1
6 => 3
1 => 7

但是如果不知何故我已经有了一个计数字典,我不能只添加它们:

addcounts!(x, y)

[错误]:

MethodError: no method matching addcounts!(::Dict{Int64,Int64}, ::Dict{Int64,Int64})
Closest candidates are:
addcounts!{T}(::Dict{T,V}, ::AbstractArray{T,N}) at /Users/liling.tan/.julia/v0.5/StatsBase/src/counts.jl:230
addcounts!{T,W}(::Dict{T,V}, ::AbstractArray{T,N}, ::StatsBase.WeightVec{W,Vec<:AbstractArray{T<:Real,1}}) at /Users/liling.tan/.julia/v0.5/StatsBase/src/counts.jl:237

这项工作也没有:

x + y

[错误]:

MethodError: no method matching +(::Dict{Int64,Int64}, ::Dict{Int64,Int64})
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:138

有没有办法组合多个countmap

例如在 Python 中:

>>> from collections import Counter
>>> a = [1,2,3,4,1,2,2,3,1,2,5,7,4,8,4]
>>> b = [1,2,5,3,1,6,1,6,1,2,6,2]
>>> x, y = Counter(a), Counter(b)
>>> z = x + y
>>> z
Counter({1: 7, 2: 7, 3: 3, 4: 3, 6: 3, 5: 2, 7: 1, 8: 1})

最佳答案

正如 Jun Zhang 所建议的,DataStructures.jl 提供了 Accumulator 类型(又名计数器)。具体来说,要得到问题中的结果:

using DataStructures

x,y = counter(a),counter(b)

push!(x,y) # push! replaces addcounts!

现在 x 包含 xy 的总和。

关于python - 如何在 Julia 中组合 countmap 和 proportionmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42081174/

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