通俗来讲取一个数组arr[i] 中某一段段元素称为 切片
一维数组和二维数组相比有区别
import numpy as np # arr[i:j] 表示片取 ;参数设置是arr[start,end,step] # 一维数组 切片 arr = np.arange(6) # [0,1,2,3,4,5] print(arr[1:2]) # [1] 输出从a[i:j-1] 的值 print(arr[1:3]) # [1 2] print(arr[:2]) # [0 1] start参数的位置没有值,表示start(i)“缺省”,输出从a[0:j-1] 的值 即i=0 print(arr[2:]) # [2 3 4 5] end参数的位置没有值,表示end(j)“缺省”,输出从a[2:j] 的值 print(arr[::2]) # [0 2 4] i位置被 : 代替,arr[::j] j表示步长,从a[0]开始个j个元素输出 print(arr[1::]) # [1 2 3 4 5] j位置被 : 代替,arr[i::] 表示从i开始,到最后,片取输出 print(arr[::]) # [0 1 2 3 4 5] 输出完整数组 print(arr[...], '\n') # 二维数组 切片 arr1 = np.arange(9).reshape(3, 3) # arr1[i:j] # [[0 1 2] # [3 4 5] # [6 7 8]] print(arr1[1:2]) # [[3 4 5]] 输出第i行,第j-1列 print(arr1[1:3]) # [[3 4 5] # [6 7 8]] print(arr1[:2]) # [[0 1 2] # [3 4 5]] # i 缺省 输出前 j-1行 print(arr1[2:]) # [[6 7 8]] j 缺省 表示输出后i行 print(arr1[::2]) # [[0 1 2] # [6 7 8]] “2”此时表示步长,从第0行开始间隔”2-1“行输出 print(arr1[2::]) # [[6 7 8]] 从第2行开始输出 print(arr1[1, 0]) # 3 print(arr1[:, 1]) # [1 4 7] 输出第一列 print(arr1[1, :]) # [3 4 5] 输出第一行 print(arr1.mean(axis=1)) # [1. 4. 7.] 计算每行的平均值 print(arr1.mean(axis=0)) # [3. 4. 5.] 计算每列的平均值 print(arr1.argmax()) # 8 获取最大值索引 # 遍历 索引法 for i in range(3): for j in range(3): print(arr1[i, j]) # 遍历 np.nditer() for i in np.nditer(arr1): print(i)
切片引索维负数时称为负切片:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # 从末尾开始的索引 3 到末尾开始的索引 1,对数组进行切片 print(arr[-3:-1]) # [5 6]
二维数组的切片:
import numpy as np # 片取第一行索引维1到4-1的元素 arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[1, 1:4]) # [7 8 9]