【Numpy学习记录】np.transpose讲解

本文通过实例详细解析了NumPy库中np.transpose函数的功能及其用法,包括二维和多维矩阵的转置操作,并解释了参数axes的具体含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    想了很久,决定还是追寻大神之路,开始写写博客,记录一下成长之路

    废话不多说,我们开始讲正题: what is np.transpose?

1、首先看看二维矩阵:

 

import numpy as np


arr = np.arange(30).reshape(5, 6)
print(arr)
tran_arr = np.transpose(arr, axes=None)
print(tran_arr)

        输出结果为:

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]

 [24 25 26 27 28 29]]

[[ 0  6 12 18 24]
 [ 1  7 13 19 25]
 [ 2  8 14 20 26]
 [ 3  9 15 21 27]
 [ 4 10 16 22 28]
 [ 5 11 17 23 29]]    这个结果意料之中,很好理解,就是线性代数的转置矩阵 

2、再看看多维(三维为例)矩阵

            a.首先,要明确坐标问题

np.arange(12).reshape(2, 2, 3)

(2, 2, 3) 分别代表 d,  h,  w

我们不妨继续看看:

        

arr = np.arange(12).reshape(2, 2, 3)
print(arr[1, 0, 0])

输出结果为:

                6       这下明白了吧,动手实践,多试几个

            b. 接下来还要明白一个索引问题

    

形状索引
20
21
32

我们看看代码:

 

arr = np.arange(12).reshape(2, 2, 3)
print(arr)
tran_arr = np.transpose(arr, (1, 0, 2))  # (1, 0, 2)即为上面所说的索引号
print(tran_arr)

    输出结果:

 [[[ 0  1  2]
  [ 3  4  5]]

 [[ 6  7  8]
  [ 9 10 11]]]

 

[[[ 0  1  2]
  [ 6  7  8]]

 [[ 3  4  5]
  [ 9 10 11]]]

  这样就实现了转置矩阵,但是对于初学者这个例子恐怕远远不够理解,我们换个例子你就懂啦!

 

arr = np.arange(24).reshape(3, 4, 2)
print(arr)
tran_arr = np.transpose(arr, (1, 0, 2))
print(tran_arr)

输出结果:

        [[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]]

 [[ 8  9]
  [10 11]
  [12 13]
  [14 15]]

 [[16 17]
  [18 19]
  [20 21]
  [22 23]]]

 

[[[ 0  1]

  [ 8  9]
  [16 17]]

 [[ 2  3]
  [10 11]
  [18 19]]

 [[ 4  5]
  [12 13]
  [20 21]]

 [[ 6  7]
  [14 15]
  [22 23]]]

            上面的shape 由(3,4,2)变成了(4,3,2),不就是因为索引号由(0,1,2)变成了(1,0,2)吗?

转置就是这么简单!

    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值