关于python中的transpose
原文地址:https://www.cnblogs.com/chenyansu/p/6774963.html,
看书中看到一行代码:
mymatrix5 = mat([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
mymatrix5.transpose()
在Numpy对矩阵的转置中,我们可以用transpose()函数来处理。
这个函数的运行是非常反常理的,可能会令人陷入思维误区。
假设有这样那个一个三维数组(2*4*2):
array ([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
(1). 错误的观点
我们通常的想法是
从x轴看去,0, 1 ,2 ,3
从y轴看去,0,4
从z轴看去,0, 8
这样表达或许更清晰
y y
x: 0, 1, 2, 3 ----z---- 8, 9, 10, 11
4, 5, 6, 7 ----z----12, 13, 14, 15
下标的排列为[x, y, z]
(2). 正确的观点
事实上,上述庙是是错误的,我们可以通过下标来测试:
arr[0, 0, 0]
0
arr[1, 0, 0]
8
arr[0, 1, 0]
4
arr[0, 0, 1]
1
可以看出,通过改变第一个下标, 我们实际的变动为(1)中表示的z,而不是x,arr[1, 0, 0]所得的数是8而不是1;通过改变第三个下标, 我们实际的变动为(1)中表示的x,而不是z,arr[0, 0, 1]所得的数是1而不是8.
所以,一个数的下标为[z, y, x]
(3)transpose函数的使用
首先,我们利用transpose原样输出
arr.transpose((0, 1, 2))
-----------结果的分割线----------
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
在这里,transpose()函数的(0, 1, 2)对应着(z, y, x)轴
当我们输入arr.transpose((0, 2, 1))时,产生下列结果
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
我们可以看到,当我们改变了1和2的位置,x和y转置了。
(4)总结:重点在于理解,三维数组的下标为[z, y, x], transpose()对其的默认编号为0=z, y=1, x=2.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具