1 transpose
表明矩阵的转置,可以通过单个数据的位置来理解。每个元素根据矩阵的索引会有一个位置,转置之后元素的位置会变成新的位置,列如一个元素开始的位置是 (1,5) ,转置之后就是(5,1)了;开始的位置是(1,1,0,6),转置的参数设置为(1,2,3,0)之后,该元素的位置变为 (1,0,6,1),思考一下为什么,矩阵整体的shape也会相应变化,如果之前是(2,2,7,7), 转置之后就是(2,7,7,2)。
代码演示:
import numpy as np
a = np.array([[0, 1],
[2, 3],
[4, 5]])
print( a: , a, a.shape, sep=
)
print( ========================== )
b = np.transpose(a, [1, 0])
# b = np.transpose(a) # 默认转置,与上一行等效
print( b: , b, b.shape, sep=
)
print( ========================== )
x = np.ones((1, 2, 3))
print( x: , x, x.shape, sep=
)
print( ========================== )
b = np.transpose(x, [1, 0, 2])
print( b: , b, b.shape, sep=
)
print( ========================== )
b = np.transpose(x)
print( b: , b, b.shape, sep=
)
输出:
a:
[[0 1]
[2 3]
[4 5]]
(3, 2)
==========================
b:
[[0 2 4]
[1 3 5]]
(2, 3)
==========================
x:
[[[1. 1. 1.]
[1. 1. 1.]]]
(1, 2, 3)
==========================
b:
[[[1. 1. 1.]]
[[1. 1. 1.]]]
(2, 1, 3)
==========================
b:
[[[1.]
[1.]]
[[1.]
[1.]]
[[1.]
[1.]]]
(3, 2, 1)
2 reshape
先按照某顺序打散,再按照这个顺序插入。
C 是按照行顺序, F 是按照列顺序,A 就是按照数据在内存中存储的顺序来。
多维度时:C 顺序准确的含义是从最里面的轴开始读写,而F顺序则是从最外面的轴开始读写
代码演示:
import numpy as np
a = np.array([[0, 1],
[2, 3],
[4, 5]])
print( a: , a, a.shape, sep=
)
b = np.reshape(a, (2, 3), order= F )
print( b: , b, b.shape, sep=
)
输出:
a:
[[0 1]
[2 3]
[4 5]]
(3, 2)
b:
[[0 4 3]
[2 1 5]]
(2, 3)
3 混合操作实例
# reshape transpose
操作1: (1, 1, 52, 52) ---------> (1, 1, 2704) ------------> (1, 2704, 1)
# transpose (0, 2, 3, 1) reshape
操作2: (1, 1, 52, 52) ---------> (1, 52, 52, 1) ----------> (1, 2704, 1)
感谢链接:
https://zhuanlan.zhihu.com/p/72128096
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...

