Python NumPy数组转置与轴变换详解
本文详细解析Python NumPy库中数组转置与轴变换的核心概念。涵盖矩阵转置、内积计算、二维及三维数组的轴交换方法,通过具体代码示例演示transpose与swapaxes函数的使用,帮助开发者掌握多维数据操作技巧。
NumPy数组转置与轴变换概述
本文深入探讨Python中NumPy库的数组转置与轴变换技术,通过详细的代码示例展示其实际应用,为学习和工作提供有价值的参考。
矩阵转置与内积基础
理解矩阵转置的基本概念
>>> import numpy as np
>>> arr=np.arange(15).reshape((3,5))
>>> arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> arr.T
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
掌握矩阵内积的计算方法
>>> import numpy as np
>>> arr=np.arange(15).reshape((3,5))
>>> arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> arr.T
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
>>> np.dot(arr.T,arr)
array([[125, 140, 155, 170, 185],
[140, 158, 176, 194, 212],
[155, 176, 197, 218, 239],
[170, 194, 218, 242, 266],
[185, 212, 239, 266, 293]])
轴变换原理与二维操作
了解轴变换的基本原理
分析二维数组的轴变换操作

实现两个轴的简单交换
>>> import numpy as np
>>> arr=np.arange(15).reshape((3,5))
>>> arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> arr.transpose(1,0)#1轴和0轴进行交换
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
三维数组的轴变换详解
深入三维数组的复杂轴变换
>>> arr = np.arange(16).reshape((2, 2, 4))
>>> arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
>>> arr.transpose((1,0,2))
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
三维变换看似复杂,但若将矩阵中的每个点表示为P(x,y,z),在NumPy中x、y、z分别对应索引0、1、2,理解起来就简单多了。
以原数组中坐标为(0,0,0)的元素0为例,执行transpose(1,0,2)时,x和y坐标互换,z坐标保持不变,因此该点在新矩阵中的坐标仍为(0,0,0)。
再看另一个例子,坐标为(0,1,1)的元素4,其x和y坐标交换后变为(1,0,1),因此它在新矩阵中的位置对应于索引(1,0,1)。
实际上,transpose函数正是通过对原矩阵中每个点执行上述坐标变换,最终生成新的矩阵结构。
轴交换操作示例
演示两轴交换的具体效果
展示交换第1轴和第2轴的操作结果
>>> arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
>>> arr.swapaxes(1,2)
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
>>> arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
以上内容涵盖了NumPy数组转置与轴变换的主要知识点,希望能为读者的学习提供帮助,欢迎继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













