通过索引得到的是原数组降低维度的内容,通过切片得到的是原数组维度的部分内容。
arr2d = np.array([[1,2,3],[4,5,6]]) 这是一个Numpy的二维数组
利用索引,获得arr2d中的内容:
arr2d[0]是[1,2,3],是一个一维数组,比arr2d二维数组降低了一个维度
arr2d[1]是[4,5,6],是一个一维数组,比arr2d二维数组降低了一个维度
arr2d[0,1],获得2。可以将其看为两步,首先是arr2d[0]获得降低一个维度的一维数组[1,2,3],然后再对一维数组[1,2,3]进行索引操作,得到一个数字2,从一维降到没有维度概念了,一个标量。
利用切片,获得arr2d中的内容:
切片总是按照轴进行的,对于二维数组来说,先切0轴,再切1轴:
0轴是竖着的,所以切的时候只能“横着切”,1轴是横着的,所以切的时候只能“竖着切”。
arr2d[1:] 对arr2d横向切出[[4,5,6]],是一个二维数组,与arr2d的维度一致
arr2d[1: , :2] 是一个连续切片操作,先横着切0轴,切出[[4,5,6]],再竖着切1轴,切出[[4,5]],维度始终保持不变。
如果想得到降维的切片怎么办呢?就需要使用切片索引。
切片索引的本质还是切片,看上去就像混合使用了切片和索引,达到获得降维切片的目的。
arr2d[1,:2] 切片索引还是按照切片的方式来操作,第一次横切出降维的[4,5,6],再在一维数组上切出保持维度的[4,5]
arr2d[:1,2] 第一次横切出不降维的[[1,2,3]],第二次竖切出降维的[3]
arr2d[:2,1] 第一次横切出部将为的[[1,2,3],[4,5,6]],第二次竖切出降维的[2,5]