使用幕布做了一系列详细笔记请点击:
高维ndarray的轴轴编号和索引傻傻分不清楚
很多函数需要传入轴编号,非常容易和索引弄混,以3维数组为例,轴有3条,编号分别为 0,1,2
我们制造一个3×3×3的3维数组:
arr3d=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]])
arr3d.shape
输出
(3, 3, 3)
arr3d数组的shape元组为(3,3,3),元组的索引为 [ 0,1,2 ]
可以看到轴编号和shape元组的索引是对等的,所以这个编号可以理解为高维ndarray.shape产生的元组的索引轴是什么鬼
数组就是按照下面的顺序储存的:
[ [[1,2,3] , [4,5,6] , [7,8,9] ], [[10,11,12] , [13,14,15] , [16,17,18] ] , [[19,20,21] , [22,23,24] , [25,26,27] ] ]
最内层一对 [ ] 可以代表一个1维数组,加粗的一对 [ ]里面有3个一维数组,也就是2维数组,最外层的一对 [ ] 里面有3个2维数组也就是3维数组
我们知道shape(3,3,3)表示数组的维度,既然shape的索引可以看做轴编号,那么一条轴其实就是一个维度,0轴对应的是最高维度3维,1轴对应2维,2轴对应的就是最低维度的1维。
数组中其实不存在行和列的概念,为了便于理解,我们画一个具有行和列的九宫格