numpy中的transpose()用法和计算(没有计算机,我们应该怎么算出来)

numpy中的transpose()用法和计算(没有计算机,我们应该怎么算出来)

1.理解transpose的用法

2.我们应该怎么手写出转换后二维数组,三维数组

前言

我刚开始头脑也没有转过弯来,一直想不明白这个0,1,2轴,因为网上太多说什么可以看做x,y,z轴,然后我越看越不清楚,希望跟我一样不理解的小白也能理解清楚。

第一次写博客,望大佬们勿喷,欢迎评论区一起交流学习

正文

在此之前我们应该先了解一些基本的numpy里面的函数用法,才能更好的理解transpose

shape函数 用来判断几行几列,举个例子:

import numpy as np
arr = np.array([2,3,4]) #里面有3个元素
arr1 = np.array([[1,2,3],[4,5,6]])  #里面有6个元素
print(arr.shape)
print(arr1.shape)
#输出:
#(3,)
#(2, 3)

1.从中可以看出 shape返回的数字第1个代表着行,第2个代表着列,代码中arr.shape返回的是类似Python里的元祖,只有一个数字的时候要在数字后面加上一个逗号(3,)---->实际相当于(1,3)一行三列
2.乘积之和等于数组里面的元素个数

reshape函数 用来生成几行几列的数组,给入的参数乘积必须要等于数组里面的个数,否则会报错。例如:arr = np.arange(12).reshape(4,3) 12=4*3
生成一个四行三列的有序数组

正式进入transpose函数的用法:

#二维数组的transpose用法很简单,就是x,y轴互换一下,相当于数学上的矩阵转置
arr1 = np.array([[1,2,3],[4,5,6]])  #里面有6个元素
print(arr1)
[[1 2 3]
[4 5 6]]

print(arr1.shape)  #输出 2行 3列
print(arr1.transpose())   #进行转置,默认传参(1,0)
[[1 4]
[2 5]
[3 6]]
print(arr1.transpose(1,0))  #会发现和上面一样
[[1 4]
[2 5]
[3 6]]

二维数组使用transpose,简单来说就是x轴,y轴互相转换一下,也就相当于0轴,1轴互相转换一下。

三维数组使用transpose函数,下面我希望能通过我的理解让不理解的小白跟我一起理解下来

import numpy as np
#先产生一个  用reshape产生一个  2组 2维数组,2维数组里面有3个元素
arr = np.arange(24).reshape(2,4,3)
[[[ 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(arr.shape)  #是一个(2,4,3)

!!重点来了 上面这个2,4,3你要分别把它看作0轴,1轴,2轴,现在我们对arr这个数组进行transpose,默认传参(2,1,0),轴的顺序原本是0,1,2,就相当于我的2轴和1轴互换了位置,让我们继续看代码

new_arr = arr.transpose(2,1,0)
print(new_arr)  #你们猜一猜transpose转换后是几组几行几列
[[[ 0 12]
  [ 3 15]
  [ 6 18]
  [ 9 21]]

 [[ 1 13]
  [ 4 16]
  [ 7 19]
  [10 22]]

 [[ 2 14]
  [ 5 17]
  [ 8 20]
  [11 23]]]
print(new_arr.shape)  #(3,4,2)  你答对了吗?

相比之前(2,3,4)—》变到了(4,3,2),是不是2和4互换了位置,也就是所谓的0轴和2轴互换了位置,生成了一个4组,3行,2列的新数组

通过了上面的例子,应该已经掌握了,轴互换怎么计算新生成的数组了吧,。

假设我们不使用计算机,我们怎么写出新生成的数组呢?

原数组 243[[[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]]

 [[12 13 14]
  [15 16 17]
  [18 19 20]
  [21 22 23]]]
经过了 transpose  变成了  342列 
好好观察一下规律 聪明的你一定能看出来怎么写的 哈哈哈
[[[ 0 12]
  [ 3 15]
  [ 6 18]
  [ 9 21]]

 [[ 1 13]
  [ 4 16]
  [ 7 19]
  [10 22]]

 [[ 2 14]
  [ 5 17]
  [ 8 20]
  [11 23]]]

相信大家已经理解的差不多了,快快一起实践起来吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值