当前位置:  开发笔记 > 编程语言 > 正文

从Julia中的数组中抽取行

如何解决《从Julia中的数组中抽取行》经验,为你挑选了1个好方法。

我可以从一维阵列中取样就好了.例如

julia> a = [1; 2; 3]
3-element Array{Int64,1}:
 1
 2
 3
julia> sample(a, myweights, 5)
5-element Array{Int64,1}:
 1
 2
 1
 3
 3

我也可以采取加权样本:

julia> myweights = weights([0.8, 0.1, 0.1])
StatsBase.WeightVec{Float64,Array{Float64,1}}([0.8,0.1,0.1],1.0)

julia> sample(a, myweights, 5)
5-element Array{Int64,1}:
 2
 1
 1
 1
 1

我想对2D数组做同样的事情,但是按行而不是按元素进行采样.例如,如果我有阵列

julia> b = [1 1 1; 2 2 2; 3 3 3]
3×3 Array{Int64,2}:
 1  1  1
 2  2  2
 3  3  3

我希望能够采用未加权和加权的样本,为我提供输出

 1  1  1
 2  2  2
 1  1  1
 1  1  1
 3  3  3

我怎样才能做到这一点?



1> Matt B...:

这里最简单的解决方案是从行的索引中进行采样,然后使用它来索引到矩阵:

julia> idxs = sample(indices(b, 1), myweights, 10)
10-element Array{Int64,1}:
 1
 1
 1
 2
 1
 1
 3
 1
 1
 1

julia> b[idxs, :]
10×3 Array{Int64,2}:
 1  1  1
 1  1  1
 1  1  1
 2  2  2
 1  1  1
 1  1  1
 3  3  3
 1  1  1
 1  1  1
 1  1  1

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有