切片

  1. import numpy as np
  2. # 使用切片参数start:stop:step来进行切片操作
  3. a_array=np.arange(10)
  4. print(a_array,'\n')
  5. b_array=a_array[1:10:2]
  6. print(b_array,'\n')
  7. c_array=a_array[2:]
  8. print(c_array,'\n')
  9. d_array=a_array[:5]
  10. print(d_array)
  1. [0 1 2 3 4 5 6 7 8 9]
  2. [1 3 5 7 9]
  3. [2 3 4 5 6 7 8 9]
  4. [0 1 2 3 4]
  1. # 多维数组切片操作
  2. a_array=np.array([[1,2,3],[4,5,6],[7,8,9]])
  3. print(a_array,'\n')
  4. # 从a_array[n:]开始切割
  5. print(a_array[1:],'\n')
  6. # 第n列元素
  7. print(a_array[...,0],'\n')
  8. # 第n行元素
  9. print(a_array[1,...],'\n')
  10. # 第n列及剩下的所有元素
  11. print(a_array[...,1:],'\n')
  12. # 第n行及剩下的所有元素
  13. print(a_array[1:,...])
  1. [[1 2 3]
  2. [4 5 6]
  3. [7 8 9]]
  4. [[4 5 6]
  5. [7 8 9]]
  6. [1 4 7]
  7. [4 5 6]
  8. [[2 3]
  9. [5 6]
  10. [8 9]]
  11. [[4 5 6]
  12. [7 8 9]]

numpy高级索引

  1. # 整数数组索引
  2. array=np.array([[1,2,3],[4,5,6],[7,8,9]])
  3. print(array,'\n')
  4. #获取(0,0),(1,1),(2,2)处的元素
  5. print(array[[0,1,2],[0,1,2]],'\n')
  6. #获取(0,0),(0,2),(2,0),(2,2)处的元素
  7. print(array[np.array([[0,0],[2,2]]),np.array([[0,2],[0,2]])])
  1. [[1 2 3]
  2. [4 5 6]
  3. [7 8 9]]
  4. [1 5 9]
  5. [[1 3]
  6. [7 9]]
  1. # 切片
  2. array=np.array([[1,2,3],[4,5,6],[7,8,9]])
  3. print(array,'\n')
  4. print(array[0:2,0:2],'\n')
  5. print(array[...,0:2])
  1. [[1 2 3]
  2. [4 5 6]
  3. [7 8 9]]
  4. [[1 2]
  5. [4 5]]
  6. [[1 2]
  7. [4 5]
  8. [7 8]]
  1. # 布尔索引
  2. array=np.array([[1,2,3],[4,5,6],[7,8,9]])
  3. print(array,'\n')
  4. #获取大于3的元素
  5. print(array[array>3])
  1. [[1 2 3]
  2. [4 5 6]
  3. [7 8 9]]
  4. [4 5 6 7 8 9]
  1. # 花式索引
  2. array=np.arange(25).reshape(5,5)
  3. print(array,'\n')
  4. #获取第1,2,3行元素
  5. print(array[[1,2,3]],'\n')
  6. #获取后三行元素
  7. print(array[[-1,-2,-3]])
  1. [[ 0 1 2 3 4]
  2. [ 5 6 7 8 9]
  3. [10 11 12 13 14]
  4. [15 16 17 18 19]
  5. [20 21 22 23 24]]
  6. [[ 5 6 7 8 9]
  7. [10 11 12 13 14]
  8. [15 16 17 18 19]]
  9. [[20 21 22 23 24]
  10. [15 16 17 18 19]
  11. [10 11 12 13 14]]
  1. # 还是花式索引
  2. array=np.arange(25).reshape(5,5)
  3. print(array,'\n')
  4. # 先选取行,再将列排序
  5. print(array[[2,1,3]][:,[2,3,1,4,0]],'\n')
  6. # 用numpy.ix_()函数,输入两个数组,产生笛卡尔积的映射关系
  7. print(array[np.ix_([2,1,3],[2,3,1,4,0])])
  1. [[ 0 1 2 3 4]
  2. [ 5 6 7 8 9]
  3. [10 11 12 13 14]
  4. [15 16 17 18 19]
  5. [20 21 22 23 24]]
  6. [[12 13 11 14 10]
  7. [ 7 8 6 9 5]
  8. [17 18 16 19 15]]
  9. [[12 13 11 14 10]
  10. [ 7 8 6 9 5]
  11. [17 18 16 19 15]]