索引机制、切片、和迭代方法
- 索引机制- 数组索引机制指的是用方括号([])加序号的形式引用单个数组元素,它的用处很多,比如抽取元素.选取数组的几个元素.甚至为其赋一个新值。 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21- #获取单个元素 
 a = np.arange(10,16)
 # array([10,11,12,13,14,15])
 a[4]
 #14
 #使用负数作为索引,从0开始,依次增加-1,实际表示的是从数组的最后一个元素向数组第一个元素移动。在负数索引机制中,数组第一个元素的索引最小。
 a[-1]
 # 15
 a[-6]
 # 10
 #方括号内传入多个索引值可以同时选择多个元素
 a[[1,3,4]]
 # array([11,13,14])
 #二维数组索引方法
 A = np.arange(10,19).reshape((3,3))
 # array([[10,11,12],[13,14,15],[16,17,18]])
 A[1,2]
 # 15 获取第二行第三列的元素
- 切片操作- 切片操作是指抽取数组的一部分元素生成新数组。对Python列表进行切片操作得到的数组是原数组的副本,而对NumPy数组进行切片操作得到的数组则是指向相同缓冲区的视图。 - 如想抽取(或查看)数组的一部分,必须使用切片句法;也就是,把几个用冒号(:)隔开的数字置于方括号里。 - 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- a = np. arange(10,16) 
 # array([ 10,11,12,13,14,15])
 a[1:5]
 # array([11,12,13,14]) 从第二个到第六个元素这一部分
 a[1:5:2]
 # arrat[11,13] 从第二个到第六个元素这一部分,间隔为2
 #省去第一个数字,NumPy会认为第一个数字是0(对应数组的第一个元素);省去第二个数字,NumPy则会认为第二个数字是数组的最大索引值;如省去最后一个数字,它将会被理解为1,也就是抽取所有元素而不再考虑间隔。
 a[::2]
 # array([10,12,14])
 a[:5:2]
 # array([10,12,14])
 a[:5:]
 # array([10,11,12,13,14])
 #二维数组切片操作
 A = array([[10,11,12],[13,14,15],[16,17,18]])
 A[0,:]
 # array([10,11,12]) 只抽取第一行
 A[:,0]
 # array([10,13,16]) 只抽取第一列
 A[0:2,0:2]
 # array([[10,11],
 # [13,14]]) 如要抽取一个小点儿的矩阵,需要明确指定所有的抽取范围。
 A[[0:2],0:2]
 # array([[10,11],
 # [16,17]]) 如要抽取的行或列的索引不连续,可以把这几个索引放到数组中。
- 数组迭代- 方法一,是使用for循环遍历,二维数组使用两层循环遍历 - 方法二,apply_along_axis()函数 - 这个函数接收三个参数:聚合函数、对哪条轴应用迭代操作和数组。如果axis选项的值为o0按列进行迭代操作,处理元素;值为1,则按行操作。例如,可以先求每一列的平均数,再求每一行的平均数。 - 1 
 2
 3
 4- np.apply_along_axis(np.mean,axis=o,arr=A) 
 # array([ 13.,14.,15.])
 np.apply_along_axis(np.mean,axis=1,arr=A)
 # array([ 11.,14.,17.])