You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中permutedims函数perm参数作用机制求助

理解Julia中permutedims函数的perm参数

核心逻辑

perm参数的本质是指定新数组维度与原数组维度的对应关系:

  • 对于permutedims(A, perm),perm是长度等于ndims(A)的元组/向量
  • 新数组的第k个维度,直接对应原数组的第perm[k]个维度
  • 新数组的尺寸会同步变为原数组按perm顺序排列的维度长度

结合示例拆解

以你提供的3D数组为例:
原数组A的尺寸是(3,2,3),对应:

  • 维度1:行(长度3)
  • 维度2:列(长度2)
  • 维度3:层(长度3)

当使用permutedims(A, (3,2,1))时:

  1. 新数组的第1维 ← 原数组的第3维(层),所以新第1维长度为3
  2. 新数组的第2维 ← 原数组的第2维(列),长度保持2不变
  3. 新数组的第3维 ← 原数组的第1维(行),长度为3

元素位置对应

新数组中索引为(x,y,z)的元素,等于原数组中索引为(z,y,x)的元素:

  • 新维度1的x对应原维度3的层号
  • 新维度2的y对应原维度2的列号
  • 新维度3的z对应原维度1的行号

比如:

  • 原数组A[1,1,1] = 1 → 新数组B[1,1,1] =1
  • 原数组A[1,1,2] =7 → 新数组B[2,1,1] =7
  • 原数组A[2,1,1] =2 → 新数组B[1,1,2] =2

这正好对应你观察到的:原数组每个内层矩阵(层)的第z行元素,会变成新数组第z个内层矩阵的列元素。

通用规律总结

对于N维数组A,假设perm = (p₁,p₂,...,pₙ),那么:

  • 新数组的尺寸为(size(A,p₁), size(A,p₂), ..., size(A,pₙ))
  • 新数组元素B[i₁,i₂,...,iₙ] = A[j₁,j₂,...,jₙ],其中jₖ满足:找到perm中等于k的位置m,原维度k的索引就是新维度m的索引

换一种直白的说法:把perm看成是“从原数组中挑选维度的顺序”——你按perm的顺序把原数组的维度依次拿出来,组成新数组的维度,元素的位置会跟着维度的映射关系重新排列。

内容的提问来源于stack exchange,提问作者Shayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:02:03