【transpose、reshape】numpy中维度变换

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='\n')
print('==========================')
b = np.transpose(a, [1, 0])
# b = np.transpose(a)     # 默认转置,与上一行等效
print('b:', b, b.shape, sep='\n')
print('==========================')

x = np.ones((1, 2, 3))
print('x:', x, x.shape, sep='\n')
print('==========================')
b = np.transpose(x, [1, 0, 2])
print('b:', b, b.shape, sep='\n')
print('==========================')
b = np.transpose(x)
print('b:', b, b.shape, sep='\n')

输出:

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='\n')

b = np.reshape(a, (2, 3), order='F')
print('b:', b, b.shape, sep='\n')

输出:

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值