Arrays 将数组{Int,1}转换为数组{Int,2}

Arrays 将数组{Int,1}转换为数组{Int,2},arrays,type-conversion,julia,Arrays,Type Conversion,Julia,我使用了一个函数,它将数组{Int,2}作为参数,但当数组仅包含1个整数时,它不起作用(在这种情况下,数组类型是数组{Int,1}) 我知道如何创建包含2个或更多整数的数组{Int,2}: S2 = [1 2] # S2 is an Array{Int, 2} S3 = [1 2 3] # S3 is an Array{Int, 2} 但我不知道如何创建只有1个整数的数组{Int,2}: S1 = [1] # S1 is an Array{Int, 1} 是否可能?使用hcat功能,例如:

我使用了一个函数,它将数组{Int,2}作为参数,但当数组仅包含1个整数时,它不起作用(在这种情况下,数组类型是数组{Int,1})

我知道如何创建包含2个或更多整数的数组{Int,2}:

S2 = [1 2] # S2 is an Array{Int, 2}
S3 = [1 2 3] # S3 is an Array{Int, 2}
但我不知道如何创建只有1个整数的数组{Int,2}:

S1 = [1] # S1 is an Array{Int, 1}

是否可能?

使用
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

使用
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

另一种可能是使用
重塑

julia> S1 = [1]
1-element Array{Int64,1}:
 1

julia> reshape(S1,1,1)
1×1 Array{Int64,2}:
 1

另一种可能是使用
重塑

julia> S1 = [1]
1-element Array{Int64,1}:
 1

julia> reshape(S1,1,1)
1×1 Array{Int64,2}:
 1
可能的重复可能的重复