一、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 |

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

被折叠的 条评论
为什么被折叠?



