我有一个数组
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])
我有一个数组
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(sparseMatrix)
具有相同的稀疏模式。 - Oscar Smith使用 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.
Array{Int,2}(undef, size(array1))
可以完美地工作! - DNFArray{Int,2}(undef, size(array1))
是可行的,而你说它不行。它适用于所有维度。 - DNFArray{Int}(undef, size(array1))
。好的,现在我看到问题了:类型参数里面有数字2。把它去掉就可以了。 - DNF