目录
????????切片操作允许访问数组的子集。在 NumPy 中,可以对多维数组进行切片,就像处理一维数组一样简单。
import numpy as np
# 创建一个一维数组
arr = np.arange(10)
# 切片,获取索引1到6之间的元素
slice_arr = arr[1:7]
print(slice_arr) # 输出: [1 2 3 4 5 6]
# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 切片,获取第一行的第二和第三个元素
slice_arr_2d = arr_2d[0, 1:]
print(slice_arr_2d) # 输出: [2 3]
布尔型索引允许我们根据条件选取数组中的元素。例如,假设有一个一维数组 arr
:
import numpy as np
arr = np.array([4, 2, 9, 6, 7, 3])
创建一个布尔向量并用其作为索引来获取满足条件的元素:
mask = arr > 5
selected = arr[mask]
selected
将包含大于5的所有元素。
在多维数组中,可以使用整数列表或数组来进行索引。这允许你直接指定需要提取的元素位置。
multi_arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
indices = [0, 2] # 指定行索引
selected_rows = multi_arr[indices]
selected_rows
将包含第0行和第2行的内容。
花式索引允许使用非连续或者非顺序的索引集合。它可以用于一维或多维数组。
fancy_indices = [1, 3, 2, 0]
shuffled_arr = multi_arr[fancy_indices]
shuffled_arr
将按照给定的顺序重新排列数组的行。
在多维数组中,可以使用元组形式的索引来选择特定的子区域。
slice_of_multi_arr = multi_arr[1:3, 1:3] # 等效于 multi_arr[(1, 2), (1, 2)]
这里选择了第1至第2行和第1至第2列的子矩阵。
在实践中,可以组合使用切片与高级索引以实现更复杂的操作。例如:
mixed_indexing = multi_arr[[0, 2], 1:3:2] # 结合了列表索引和切片
这里首先选择了第0行和第2行,然后在每一行上取第1列和第3列(由于步长为2,所以只取到了第3列)