如何理解numpy.rollaxis及numpy.swapaxes

本文详细介绍了numpy中的rollaxis和swapaxes函数,通过实例展示了如何将数组的轴进行滚动和交换,帮助理解这两个函数在数据操作中的应用。通过分析轴变换前后元素的位置,阐述了轴滚动和交换的原理。

一、numpy.rollaxis

import numpy as np

# 创建了三维的 ndarray

a = np.arange(8).reshape(2,2,2)

输出a为原数组:

[[[0 1] [2 3]]

 [[4 5] [6 7]]]

# 将轴 2 滚动到轴 0(宽度到深度)

#numpy.rollaxis(arr, axis, start),rollaxis的公式,参数说明如下:
  • #arr:数组
  • #axis:要向后滚动的轴,其它轴的相对位置不会改变
  • #start:默认为零,表示完整的滚动。会滚动到特定位置。

b = np.rollaxis(a,2,0)

输出b为调用 rollaxis 函数:

[[[0 2] [4 6]]

 [[1 3] [5 7]]]

为什么呢??????

三维数组array(轴0,轴1,轴2),将轴2滚动到轴0位置,其余轴顺序不变,即new_array(轴2,轴0,轴1)

分别写出各元素的在a和b中的位置坐标,如下图

a.array element b.array
[0,0,0] 0 [0,0,0]
[0,0,1] 1 [1,0,0]
[0,1,0] 2 [0,0,1]
[0,1,1] 3 [1,0,1]
[1,0,0] 4 [0,1,0]
[1,0,1] 5 [1,1,0]
[1,1,0] 6 [0,1,1]
[1,1,1] 7 [1,1,1]

shape=(2,2,2)的三维数组轴2滚动到轴0之后仍然是shape=(2,2,2),所以无论是a还是b数组,各个元素的位置坐标都是确定的且是一致的,所以本对应表全部写在一个表格便于对照,(如果轴滚动导致输出数组的形状变了,请另写出新表的各个元素的绝对位置来做对应),找到上表中的a、b值填到对应格子:

绝对位置 [0,0,0] [0,0,1]
a 0 1
b 0 2
   
绝对位置 [0,1,0] [0,1,1]
a 2 3
b 4 6
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值