Julia中数组中的采样行

Julia中数组中的采样行,julia,Julia,我可以从一维阵列中进行采样。例如 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{Float

我可以从一维阵列中进行采样。例如

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

如何做到这一点?

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

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

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

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