通过切片数字创建 Julia 矩阵

ara*_*van 0 matrix julia

在 Julia 中,您可以创建这样的矩阵:

A = [1:3 4:6 7:9] # 3x3 Matrix
# 1 4 7
# 2 5 8
# 3 6 9
Run Code Online (Sandbox Code Playgroud)

您可以像这样调用 A 的每个索引:

A[3, 3] # 9
Run Code Online (Sandbox Code Playgroud)

但是这条线

A = [1:3] #  should return 3x1 Matrix, but does not!
Run Code Online (Sandbox Code Playgroud)

不会按预期返回 3x1 矩阵!它只返回一个包含一个元素的数组!

typeof(A) # Array{UnitRange{Int64},1}
Run Code Online (Sandbox Code Playgroud)

我在这里出了什么问题?

谢谢

Fen*_*ang 5

要制作 3×1 矩阵,正确的语法是

julia> hcat(1:3)
3×1 Array{Int64,2}:
 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

要做到这一点而不为范围分配额外的空间(即制作一个惰性矩阵),可以这样做

julia> reshape(1:3, 3, 1)
3×1 Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}}:
 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

您使用的语法[1:3]构造了一个单位范围的单元素向量。