Pyhthon:认识numpy中的transpose()函数

本文介绍了numpy中的transpose()函数,重点解释了该函数在处理一维、二维和三维数组时的工作原理。transpose()并不简单地交换元素位置,而是进行轴转置。对于一维数组,transpose无效;二维数组可以通过transpose或.T实现转置;而对于三维及以上数组,transpose允许自定义维度顺序。举例展示了如何使用transpose()进行轴转置操作。
摘要由CSDN通过智能技术生成

看代码的时候总是看到transpose函数,按照字面意思,觉得是转置,但是超过三维的时候,脑子有点想不过来,看了下资料。

想看具体参数可以参考–>numpy官网
但官网写得也不是很详细,看了下其他资料。
简单来说,transpose不是元素转置,而是返回轴转置的数组。所以三维就很好理解了。
举个例子:

1、一维数组:
>>> import numpy as np
>>> num1 = np.arange(5)
>>> num2 = np.transpose(num1)
>>> print('num1',num1,'\n','num2',num2)
num1 [0 1 2 3 4] 
num2 [0 1 2 3 4]

对于一维数组,transpose不起作用,因为只有一个维度,不能进行轴转置,那么对于一维数组应该怎么进行呢,可以使用np.reshape函数。

>>> num3 = np.reshape(num1,(-1,1))
>>> print('num1',num1,'\n','num3',num3)
num1 [0 1 2 3 4] 
num3 [[0]
[1]
[2]
[3]
[4]]
2、二维数组

对于二维数组进行转置有两种方法,一种是transpose.T 的 方式。

>>> num4 = np.arange(10).reshape(2,5)
>>> num5 = np.transpose(num4)  # 采用transpose函数
>>> print(num4)
[[0 1 2 3 4]
 [5 6 7 8 9]]
>>> print(num5)
[[0 5]
 [1 6]
 [2 7]
 [3 8]
 [4 9]]
>>> num6 = num4.T  # 采用.T的方式
>>> print(num6)
[[0 5]
 [1 6]
 [2 7]
 [3 8]
 [4 9]]
 

那么,transpose是怎么工作的呢,我们来看下面的例子。

>>> num7 = np.transpose(num4,(1,0))
>>> num8 = np.transpose(num4,(0,1))
>>> print(num7)
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]]
>>> print(num8)
[[0 1 2 3 4]
[5 6 7 8 9]]

可以看到,num7成功转换,但是num8并没有转换,这就说明了transpose函数是通过轴转置来工作的,原始数据num4的维度是(0,1)两个维度,通过改变第二维度和第一维度的位置即可。

3、三维数组

三维数据通上面的二维数据一样,具有两种同样的方式.

>>> num1 = np.arange(24).reshape(2,3,4)
>>> num2 = np.transpose(num1)
>>> print(num1)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
>>> print(num2)
[[[ 0 12]
  [ 4 16]
  [ 8 20]]

 [[ 1 13]
  [ 5 17]
  [ 9 21]]
  
 [[ 2 14]
  [ 6 18]
  [10 22]]

 [[ 3 15]
  [ 7 19]
  [11 23]]]
>>> print(num1.shape)
(2, 3, 4)
>>> print(num2.shape)
(4, 3, 2)

从上面例子最后可以看出,原来的数据第三维度为4,而新的数据的第一维度是4,则表示,原来数据的(0,1,2)三个维度在新的数据中变为(2,1,0),将三个维度完全转置,当然自己也可以定义维度变化的顺序,以下面例子为例.

>>> num3 = np.transpose(num1,(1,2,0))  # 自己定义维度变化的顺序
>>> print(num1.shape)
(2, 3, 4)
>>> print(num3.shape)
(3, 4, 2)

(1,2,0)表示将原来数据的第二维度【维度从0开始,1表示第二维度】变为新数据的第一维度,原来数据的第三维度变为新数据的第二维度,原来数据的第一维度变化为新数据的第三维度,则可以随意改变维度的顺序。

其中T变化的方式和默认的transpose一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值