Julia 从分布向量创建绘图矩阵
我有一个Julia 从分布向量创建绘图矩阵,julia,Julia,我有一个n分布的向量,我试图从每个n分布中创建一个nxt矩阵t using Distributions d = [Uniform(0,1), Uniform(1,2), Uniform(3,4)] r = [rand(i, 2) for i in d] # Want a 3x2 matrix, but get an array of arrays 预期: [0.674744 0.781853; 1.70171 1.56444; 3.65103 3.76522] 实际: [[0.674744
n
分布的向量,我试图从每个n
分布中创建一个nxt
矩阵t
using Distributions
d = [Uniform(0,1), Uniform(1,2), Uniform(3,4)]
r = [rand(i, 2) for i in d] # Want a 3x2 matrix, but get an array of arrays
预期:
[0.674744 0.781853; 1.70171 1.56444; 3.65103 3.76522]
实际:
[[0.674744, 0.781853], [1.70171, 1.56444], [3.65103, 3.76522]]
尝试对理解进行双重索引:
julia> using Distributions
julia> d = [Uniform(0,1), Uniform(1,2), Uniform(3,4)]
3-element Array{Uniform{Float64},1}:
Uniform{Float64}(a=0.0, b=1.0)
Uniform{Float64}(a=1.0, b=2.0)
Uniform{Float64}(a=3.0, b=4.0)
julia> r = [rand(i) for i in d, _ in 1:2]
3×2 Array{Float64,2}:
0.687725 0.433771
1.28782 1.00533
3.37017 3.88304
另一个有趣的选择是使用广播分配:
julia> out = Matrix{Float64}(undef, 3, 2)
3×2 Array{Float64,2}:
1.0735e-313 7.30082e-316
7.30082e-316 7.30082e-316
7.30082e-316 6.11918e-316
julia> out .= rand.(d)
3×2 Array{Float64,2}:
0.803554 0.457955
1.4354 1.41107
3.31749 3.2684
如果需要多次采样并需要就地操作(在模拟建模中通常是这样),此选项会更短,并且可能很有用