permutedims()调用多维数组时会做什么?
从它的名字来看,它显然与数组的维度有关。但是,在运行下面的代码时,输出是意外且不清楚的。
A = Array{Int64}(undef, 100,100,100)
B = permutedims(A, (1,2,3))
println(A == B)
Run Code Online (Sandbox Code Playgroud)
输出:
`true`
Run Code Online (Sandbox Code Playgroud)
那么它是否创建了原始数组的副本?传递的元组有什么用?
Julia的文档有时没有对给定主题的完整解释。
permutedims(A::AbstractArray, perm)
perms是一个元组,指定 A 的维度的新顺序,其中 1 对应于第一个维度(行),2 对应于第二个维度(列),3 对应于页面,依此类推,即此函数将返回其维度根据指定的数组perms。
问题的代码中发生的事情是,通过传递 tuple (1,2,3),我们告诉 Julia 将 A 的第一个暗点放在 B 的第一个暗点的位置,将第二个放在第二个的位置,依此类推。这基本上创建了数组的副本A。
用例示例
A = ones(10,20,30) # Creates an array full of 1 of the size (10,20,30)
B = permutedims(A, (3,1,2))
println(A == B)
println(size(B))
Run Code Online (Sandbox Code Playgroud)
输出
false
(30, 10, 20)
Run Code Online (Sandbox Code Playgroud)