📅  最后修改于: 2023-12-03 15:19:23.024000             🧑  作者: Mango
NumPy是Python中重要的数值计算库,提供了丰富的数组和矩阵运算功能。本文介绍NumPy中的基本切片Slicing和高级索引Indexing。
NumPy中一维数组的切片和Python中列表类似,使用[start:end:step]的方式:
import numpy as np
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(a[2:5]) # [2 3 4]
print(a[:4]) # [0 1 2 3]
print(a[6:]) # [6 7 8 9]
print(a[::2]) # [0 2 4 6 8]
对于多维数组,可以使用逗号隔开的切片参数:
import numpy as np
a = np.array([[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]])
print(a[1:3, 1:3]) # [[5 6] [9 10]]
print(a[:, 2]) # [2 6 10]
print(a[1:, 1::2]) # [[5 7] [9 11]]
其中,a[1:3, 1:3]表示选取第2到第3行和第2到第3列的元素,a[:, 2]表示选取所有行的第3列元素,a[1:, 1::2]表示选取第2行及以后的所有行,第2列及以后的每隔一列的元素。
NumPy中提供多种高级索引方法,包括整数数组索引、布尔索引和花式索引。
整数数组索引可以通过一个整数数组来选取数组的元素:
import numpy as np
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
idx = np.array([0, 2, 4])
print(a[idx]) # [0 2 4]
布尔索引可以通过一个布尔数组来选取数组的元素:
import numpy as np
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
mask = np.array([True, False, True, False, True, False, True, False, True, False])
print(a[mask]) # [0 2 4 6 8]
花式索引是通过一个整数数组或布尔数组来选取数组的元素,它可以同时使用多个整数数组或布尔数组:
import numpy as np
a = np.array([[0, 1], [2, 3], [4, 5]])
print(a[[0, 1], [0, 1]]) # [0 3]
print(a[[0, 2], 1]) # [1 5]
mask = np.array([True, False, True])
print(a[mask]) # [[0 1] [4 5]]
其中,a[[0, 1], [0, 1]]表示选择第1和第2行,第1和第2列的表格交点,a[[0, 2], 1]表示选择第1行和第3行,第2列的元素,a[mask]表示选择mask为True的行。
本文介绍了Python中NumPy的基本切片Slicing和高级索引Indexing,包括一维数组和多维数组的切片方法,以及整数数组索引、布尔索引和花式索引。这些操作可以帮助程序员高效地操作数组,实现各种数值计算任务。