具有不同大小矢量的Julia Array

时间:2019-05-29 18:34:36

标签: julia

当创建各种大小的向量数组(例如数组)时,我正在生成错误消息。

julia> A = [[1,2] [1,2,3] [1,4] [1] [1,5,6,7]]
ERROR: DimensionMismatch("vectors must have same lengths")
Stacktrace:
 [1] hcat(::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,1}, ::Vararg{Array{Int64,1},N} where N) at .\array.jl:1524
 [2] top-level scope at none:0

但是,如果我初始化一个数组并为向量分配“没关系” ...

julia> A = Array{Any}(undef,5)
5-element Array{Any,1}:
 #undef
 #undef
 #undef
 #undef
 #undef

pseudo code> A[i] = [x,y...]
2-element Array{Int64,1}:
 1
 2

julia> A
5-element Array{Any,1}:
 [1, 2]
 [1, 2, 3]
 [1]
 [1, 5]
 [1, 2, 6, 4, 5]

是否可以使用各种大小的数组来初始化数组,还是将Julia配置为防止错误的方式。

1 个答案:

答案 0 :(得分:5)

您在最外层数组中使用的以空格分隔的语法专门用于矩阵的水平串联,因此您的代码正在尝试将所有这些向量串联到一个矩阵中,这是行不通的,因为它们的长度不同。在外部数组(如内部数组)中使用逗号来获取数组数组:

julia> A = [[1,2], [1,2,3], [1,4], [1], [1,5,6,7]]
5-element Array{Array{Int64,1},1}:
 [1, 2]
 [1, 2, 3]
 [1, 4]
 [1]
 [1, 5, 6, 7]