ndarray的转置(numpy.transpose()与A.T命令对比分析)
ndarray的转置(transpose)
对于A是由np.ndarray
表示的情况:
可以直接使用命令A.T
。
也可以使用命令A.transpose()
。
A.T 与 A.transpose()对比
结论
在默认情况下,两者效果相同,但transpose()
可以指定交换的axis
维度。
对于一维数组,两者均不改变,返回原数组。
对于二维数组,默认进行标准的转置操作。
对于多维数组A
,A.shape
为(a,b,c,d,...,n)
,则转置后的shape
为(n,...,d,c,b,a)
,即逆序。
对于.transpose()
,可以指定转置后的维度。
语法:A.transpose((axisOrder1,...,axisOrderN))
,其效果等同于np.transpose(A,(axisOrder1,...,axisOrderN))
,(axisOrder)
中是想要得到的索引下标顺序。
效果详见例子。
Example
二维默认情况下:
A = np.array([[1,2],[3,4]])
print(A)
print(A.T)
print(A.transpose())
结果如下:
多维默认情况下:
a = np.array([[[1,2,3,4],[4,5,6,7]],[[2,3,4,5],[5,6,7,8]],[[3,4,5,6],[4,5,6,7]]])
print(a.shape)
print(a.T.shape)
print(a.transpose().shape)
结果如下:
指定维度情况:
a = np.array([[[1,2,3,4],[4,5,6,7]],[[2,3,4,5],[5,6,7,8]],[[3,4,5,6],[4,5,6,7]]])
print(a.shape)
print(a.transpose(1,2,0).shape)
A = np.transpose(a,(1,2,0))
print(A.shape)
结果如下:
从截图中可以看出,a.transpose(1,2,0)
与np.transpose(a,(1,2,0))
效果相同。
代码段中给出的axes
是(1,2,0)
,这决定了transpose
后的数组,其shape
在第一个维度即shape[0]
上是原来的shape[1]
,第二维shape[1]
是原来的shape[2]
,第三维shape[2]
是原来的shape[0]
。
所以原shape
为(3,2,4)
。新的shape为(2,4,3)
。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341