arrays - 如何在 Julia 中将向量转换为向量的向量

标签 arrays julia

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

我想将我的向量 x 转换为向量的向量,如下所示:

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

其中,在x的每个向量中,维度由n确定。

什么是更快的实现方法?谢谢!

最佳答案

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

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]

在未来版本(>= v0.5?)中,我们可能需要对每个向量进行copy(),以使获得的向量独立于原始x[:] >(虽然不太确定...)

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

关于arrays - 如何在 Julia 中将向量转换为向量的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655219/

相关文章:

php - 数组中值的排列

Javascript 和动态变量插入

arrays - 如何在 Kotlin 中定义 funs(函数)数组?

julia - Julia 中最小值的位置

julia - 如何在 Julia 中将矩阵漂亮地打印到字符串?

php - 如何创建 PHP 多维数组

c - 为什么从 inptr 读入数组的值不同于 fgetc(inptr) 给出的值?

arrays - Julia:将元素附加到二维数组

julia - 如何将 JuMP 约束设置为等于数组中的值?

julia - 如何在Julia中实现二叉搜索树?