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.