Python---transpose, reshape, swapaxes

reshape

使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变;

import numpy as np
a = np.arange(16)
print(a)  # 输出[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]
arr = a.reshape((2,2,4))
print(arr)

输出:

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

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

transpose

可以创建一个改变了维度的新数组,原数组不变

arr1 = arr.transpose(2,1,0)
print(arr1)

输出:

[[[ 0  8]
  [ 4 12]]

 [[ 1  9]
  [ 5 13]]

 [[ 2 10]
  [ 6 14]]

 [[ 3 11]
  [ 7 15]]]

原先arr的有3个维度(0,1,2),每个数字都对应着每一个维度上的索引值,如arr[1,0,3]对应的值是11,也就是11的第0维度的索引值是1,第1维度索引是0,第2维度索引是3.

arr1=arr.transpose(2,1,0)的意思是,将arr的第2维换到第0维,第0维度换到第2维度去,第1维不变,并赋值给arr1。因此,arr1中11这个值所在的索引值就由[1,0,3]变换为[3,0,1],7的索引值就由[0,1,3]变为[3,1,0]。因此arr的shape是(2,2,4), arr1的shape变为了(4,2,2)

transpose变换的是维度,对应维度的索引值跟着维度变换。

swapaxes

可以创建一个改变了维度的新数组,原数组不变

arr2 = arr.swapaxes(2,1)
print(arr2)

输出:

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

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

同理,swapaxes()函数接收的是一对轴编号,也就是一对维度,将这两个维度互相交换位置。每个数值的索引值跟着维度变换位置。如arr2中的11的索引值为[1,0,3]变换为[1,3,0],7的索引值由[0,1,3]变为[0,3,1]

arr2的shape变为了(2,4,2)

转载于:https://my.oschina.net/amui/blog/1596739

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值