Julia 快速初始化一个与另一个大小相同的空数组的方法?
Julia Quick way to initialise an empty array that's the same size as another?
我有一个数组
array1 = Array{Int,2}(undef, 2, 3)
有没有办法快速创建一个与第一个数组大小相同的新数组?例如。像
array2 = Array{Int,2}(undef, size(array1))
目前我必须这样做,这非常麻烦,对于更高维度的数组更糟
array2 = Array{Int,2}(undef, size(array1)[1], size(array1)[2])
您要查找的是similar(array1)
。
您甚至可以通过传入类型来更改数组类型,例如
similar(array1, Float64)
similar(array1, Int64)
使用 similar
是一个很好的解决方案。但是您最初的尝试不起作用的原因是类型参数签名中的数字 2:Array{Int, 2}
。数字 2 指定数组必须有 2 个维度。如果你删除它,你可以有任意多的维度:
julia> a = rand(2,4,3,2);
julia> b = Array{Int}(undef, size(a));
julia> size(b)
(2, 4, 3, 2)
这也适用于其他数组构造函数:
zeros(size(a))
ones(size(a))
fill(5, size(a))
# etc.
我有一个数组
array1 = Array{Int,2}(undef, 2, 3)
有没有办法快速创建一个与第一个数组大小相同的新数组?例如。像
array2 = Array{Int,2}(undef, size(array1))
目前我必须这样做,这非常麻烦,对于更高维度的数组更糟
array2 = Array{Int,2}(undef, size(array1)[1], size(array1)[2])
您要查找的是similar(array1)
。
您甚至可以通过传入类型来更改数组类型,例如
similar(array1, Float64)
similar(array1, Int64)
使用 similar
是一个很好的解决方案。但是您最初的尝试不起作用的原因是类型参数签名中的数字 2:Array{Int, 2}
。数字 2 指定数组必须有 2 个维度。如果你删除它,你可以有任意多的维度:
julia> a = rand(2,4,3,2);
julia> b = Array{Int}(undef, size(a));
julia> size(b)
(2, 4, 3, 2)
这也适用于其他数组构造函数:
zeros(size(a))
ones(size(a))
fill(5, size(a))
# etc.