最近在自学 numpy,脑子笨,在学到翻转数组 numpy.rollaxis,理解不了官方的解释:
numpy.rollaxis 函数向后滚动特定的轴到一个特定位置
numpy.rollaxis(arr, axis, start)
参数说明:
arr:数组
axis:要向后滚动的轴,其它轴的相对位置不会改变
start:默认为零,表示完整的滚动。会滚动到特定位置。
然后去度娘找别人的理解,结果看到都是用什么索引,然后转换成二进制,看到他们的例子好像是正确的,因为例子的元素最大为 7,然后我自己测试的元素超过了 7 ,根本不适用,然后摸鱼了半天,理解成以下内容:
numpy.rollaxis 函数向后滚动特定的轴到一个特定位置
numpy.rollaxis(arr, axis, start)
首先这句话我自己的理解是:
*将 指定的轴 移至 特定轴 之前*
例:
原形状:a =(2,3,4)
b = np.rollaxis(a,2,0) # 将 轴2 移至 轴0 之前
新形状:b = (4,3,2)
其次,具体数组详情:
数组形状:shape =(2,3,4)—> (x,y,z)—> (轴0,轴1,轴2)
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
np.rollaxis(a,2,0) # 将 轴2 移至 轴0 前
New_shape = (4,2,3)—> 相对shape而言(z,x,y)—>(轴2,轴0,轴1)
可以看到的步骤:
- z 取代了 x 的位置,所以 z 就是新的 x,有4个元素,即:0,1,2,3 ;可以确定新形状:[ [ ], [ ], [ ], [ ] ]
- x 取代了 y 的位置,所以 x 就是新的 y,有2个二层列表,即:[0,1,2,3] 和 [12,13,14,15] 所在的列表数;可以新确定:[ [ [ ],[ ] ], [ [ ],[ ] ], [ [ ],[ ] ], [ [ ],[ ] ] ]
- y 取代了 z 的位置,所以 y 就是新的 z,有3个子列表,即:0,4,8 和 12,16,20所在的列表数;这是对应填入第二步确定的形状:
[ [ [0,4,8],[12,16,20] ], [ [1,5,9],[13,17,21] ], [ [2,6,10],[14,18,22] ], [ [3,7,11],[15,19,23] ] ]
array([[[ 0, 4, 8],
[12, 16, 20]],
[[ 1, 5, 9],
[13, 17, 21]],
[[ 2, 6, 10],
[14, 18, 22]],
[[ 3, 7, 11],
[15, 19, 23]]])
放两张图:
一、
二、