我使用了一个以Array {Int,2}作为参数的函数,但是当该数组仅包含1个整数(在这种情况下,因为数组类型为Array {Int,1})时该函数不起作用。
我知道如何创建具有2个或更多整数的Array {Int,2}:
S2 = [1 2] # S2 is an Array{Int, 2}
S3 = [1 2 3] # S3 is an Array{Int, 2}
但是我不知道如何创建只有1个整数的Array {Int,2}:
S1 = [1] # S1 is an Array{Int, 1}
有可能吗?
答案 0 :(得分:3)
另一种可能性是使用reshape
julia> S1 = [1]
1-element Array{Int64,1}:
1
julia> reshape(S1,1,1)
1×1 Array{Int64,2}:
1
答案 1 :(得分:2)
使用hcat
函数,例如:
julia> hcat(1)
1×1 Array{Int64,2}:
1
如果要将向量转换为矩阵,这也可以使用:
julia> x = [1]
1-element Array{Int64,1}:
1
julia> hcat(x)
1×1 Array{Int64,2}:
1
编辑:事后您也可以这样做:
julia> fill(10,1,1)
1×1 Array{Int64,2}:
10
它更复杂,但是通过这种方式,您可以简单地创建一个更高维度的对象,例如:
julia> fill(10,1,1,1)
1×1×1 Array{Int64,3}:
[:, :, 1] =
10
编辑2:将长度为1
的新维放置在任何位置的任何数组的一般解决方案是使用理解:
julia> x = [1 2
3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> [x[i,k] for i in 1:size(x,1), j in 1:1, k in 1:size(x,2)]
2×1×2 Array{Int64,3}:
[:, :, 1] =
1
3
[:, :, 2] =
2
4