numpy.swapaxes 交换矩阵的轴,旋转维度
Contact me:
Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub
对于矩阵操作有时候需要旋转维度,二维转置直接.T较为简单,如果是高维的话,需要借助numpy.swapaxes函数。
>>> a = np.array([[1, 2, 3], [4, 5, 6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> a.shape
(2, 3)
# 注意:python的维度是从0开始的,也就是二维是0维和1维
# a.swapaxes(0, 1) 等价于 np.swapaxes(a, 0, 1)
>>> a.swapaxes(0, 1)
array([[1, 4],
[2, 5],
[3, 6]])
>>> a.swapaxes(0, 1).shape
(3, 2)
# 由于是二维矩阵,可以使用.T操作
>>> a.T.shape
(3, 2)
下面使用的numpy.tile(官方文档)函数可以看另一篇博客numpy.tile 示例
# 高维示例
>>> c = np.tile(a, (2, 4, 2))
>>> c
array([[[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]],
[[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]]])
>>> c.shape
(2, 8, 6)
>>> c.swapaxes(0, 1)
array([[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6]],
[[1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3]],
[[4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6]]])
>>> c.swapaxes(0, 1).shape
(8, 2, 6)
# 可以看到0维和1维进行了交换