如何将矢量转换为Julia中的矢量矢量

Ran*_*Bob 1 arrays julia

我有一个Vector x=[1.00, 1.50, 1.00, 2.30, 4.20, 1.00]和另一个n=[2, 1, 3].

我想将我的Vector x转换为Vector of Vector,如下所示:

x[1] = [1.00, 1.50] x[2] = 1.00 x[3] = [2.30, 4.20, 1.00]

在每个Vector中x,尺寸由下式确定n.

有什么可能是实现这个的更快的方法?谢谢!

roy*_*vib 5

虽然不太确定速度,但我们也可以使用理解(像往常一样):

julia> x = [1.00, 1.50, 1.00, 2.30, 4.20, 1.00]
julia> n = [2, 1, 3]

julia> off = [ 0 ; cumsum(n) ]   # offset indices
4-element Array{Int64,1}:
 0
 2
 3
 6

julia> Vector{Float64}[ x[ off[i]+1 : off[i]+n[i] ] for i=1:length(n) ]
3-element Array{Array{Float64,1},1}:
 [1.0,1.5]    
 [1.0]        
 [2.3,4.2,1.0]
Run Code Online (Sandbox Code Playgroud)

在未来的版本(> = v0.5?)中,我们可能需要copy()为每个向量使得到的向量独立于原始向量x[:](尽管不是很确定......)

julia> Vector{Float64}[ copy( x[ off[i]+1 : off[i]+n[i] ] ) for i=1:length(n) ]
Run Code Online (Sandbox Code Playgroud)