在 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)
我在这里出了什么问题?
谢谢
要制作 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]
构造了一个单位范围的单元素向量。