对numpy中的transpose和swapaxes函数详解

yipeiwu_com6年前Python基础

transpose()

这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数。

我们看如下一个numpy的数组:

`arr=np.arange(16).reshape((2,2,4)) 
arr= 
array([[[ 0, 1, 2, 3], 
[ 4, 5, 6, 7]], 
[[ 8, 9, 10, 11], 
[12, 13, 14, 15]]])
` 

那么有:

arr.transpose(2,1,0)
array([[[ 0, 8],
  [ 4, 12]],

  [[ 1, 9],
  [ 5, 13]],

  [[ 2, 10],
  [ 6, 14]],

  [[ 3, 11],
  [ 7, 15]]])

为什么会是这样的结果呢,这是因为arr这个数组有三个维度,三个维度的编号对应为(0,1,2),比如这样,我们需要拿到7这个数字,怎么办,肯定需要些三个维度的值,7的第一个维度为0,第二个维度为1,第三个3,所以arr[0,1,3]则拿到了7

arr[0,1,3] #结果就是7

这下应该懂了些吧,好,再回到transpose()这个函数,它里面就是维度的排序,比如我们后面写的transpose(2,1,0),就是把之前第三个维度转为第一个维度,之前的第二个维度不变,之前的第一个维度变为第三个维度,好那么我们继续拿7这个值来说,之前的索引为[0,1,3],按照我们的转换方法,把之前的第三维度变为第一维度,之前的第一维度变为第三维度,那么现在7的索引就是(3,1,0)

同理所有的数组内的数字都是这样变得,这就是transpose()内参数的变化。

理解了上面,再来理解swapaxes()就很简单了,swapaxes接受一对轴编号,其实这里我们叫一对维度编号更好吧,比如:

arr.swapaxes(2,1) #就是将第三个维度和第二个维度交换
array([[[ 0, 4],
  [ 1, 5],
  [ 2, 6],
  [ 3, 7]],

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

还是那我们的数字7来说,之前的索引是(0,1,3),那么交换之后,就应该是(0,3,1)

多说一句,其实numpy高维数组的切片也是这样选取维度的。

以上这篇对numpy中的transpose和swapaxes函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

关于python中密码加盐的学习体会小结

给密码加密是什么:用户注册的密码一般网站管理人员会利用md5方法加密,这种加密方法的好处是它是单向加密的,也就是说,你只有在提前知道某一串密码对应的md5加密码,才能反推出密码是多少,虽...

浅谈Series和DataFrame中的sort_index方法

Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。 若要按值对 Ser...

Python变量作用范围实例分析

本文实例讲述了Python变量作用范围。分享给大家供大家参考。具体如下: #coding=utf-8 #变量作用范围 global z #使用全局变量 z=1 #给全局变量赋值 x=...

Python找出list中最常出现元素的方法

本文实例讲述了Python找出list中最常出现元素的方法。分享给大家供大家参考,具体如下: 假设一个list中保存着各种元素,需要统计每个元素出现的个数,并打印出最常出现的前三个元素分...

python笔记(2)

继续List: 删除元素: 复制代码 代码如下: a =[1, 2, 3, 4] a[2:3] = [] #[1, 2, 4] del a[2] #[1, 2] 清空list 复制代码...