主页 > 开源代码  > 

【数据挖掘】NumPy的索引与切片(IndexingSlicing)

【数据挖掘】NumPy的索引与切片(IndexingSlicing)
📌 NumPy ndarray 的索引与切片(Indexing & Slicing)

NumPy 提供 灵活高效 的索引与切片方式,支持 一维、二维、多维数组 的访问与操作。


1️⃣ 索引(Indexing)

索引用于访问 NumPy 数组中的 单个元素。

一维数组索引 import numpy as np arr = np.array([10, 20, 30, 40, 50]) print(arr[0]) # 访问第 1 个元素 -> 10 print(arr[-1]) # 访问最后 1 个元素 -> 50 print(arr[2]) # 访问索引 2 的元素 -> 30 二维数组索引 arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr2d[0, 1]) # 访问第 1 行第 2 列 -> 2 print(arr2d[2, -1]) # 访问最后 1 行最后 1 列 -> 9 arr2d[0, 1]:表示第 0 行、1 列。arr2d[2, -1]:表示 最后 1 行、最后 1 列(负索引)。
2️⃣ 切片(Slicing)

切片用于提取 数组的子集,语法如下:

array[start:stop:step] start:起始索引(包含)。stop:结束索引(不包含)。step:步长(默认为 1)。 一维数组切片 arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) print(arr[2:7]) # 取索引 2 到 6 -> [2 3 4 5 6] print(arr[:5]) # 取前 5 个元素 -> [0 1 2 3 4] print(arr[3:]) # 从索引 3 开始到结尾 -> [3 4 5 6 7 8 9] print(arr[::2]) # 每隔 2 取一个 -> [0 2 4 6 8] print(arr[::-1]) # 逆序数组 -> [9 8 7 6 5 4 3 2 1 0] 二维数组切片 arr2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print(arr2d[:2, 1:3]) # 取前 2 行,第 2~3 列 -> [[2 3] # [6 7]] print(arr2d[1:, ::2]) # 从第 2 行开始,每隔 2 列取值 -> [[5 7] # [9 11]] print(arr2d[::-1, ::-1]) # 行和列都逆序 -> [[12 11 10 9] # [8 7 6 5] # [4 3 2 1]]
3️⃣ 高级索引(Boolean & Fancy Indexing)

NumPy 支持 布尔索引 和 花式索引,可实现更复杂的数据提取。

(1) 布尔索引 arr = np.array([10, 20, 30, 40, 50]) mask = arr > 25 # 返回布尔数组:[False False True True True] print(arr[mask]) # 取出大于 25 的元素 -> [30 40 50] # 直接写 print(arr[arr % 20 == 0]) # 取能被 20 整除的数 -> [20 40] (2) 花式索引(Fancy Indexing) arr = np.array([10, 20, 30, 40, 50]) idx = [0, 3, 4] # 选索引 0, 3, 4 print(arr[idx]) # -> [10 40 50] arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) rows = [0, 1, 2] # 选 3 行 cols = [2, 1, 0] # 选 3 列 print(arr2d[rows, cols]) # -> [3 5 7]
📝 总结 操作语法示例说明索引arr[2]访问索引 2 位置的元素二维索引arr2d[1, 2]访问第 2 行第 3 列切片arr[1:4]取索引 1 到 3(不含 4)步长arr[::2]每隔 2 取 1 个逆序arr[::-1]逆序数组布尔索引arr[arr > 20]取大于 20 的元素花式索引arr[[1, 3, 4]]取索引 1, 3, 4

NumPy 索引 & 切片 可实现高效数据操作 🚀

标签:

【数据挖掘】NumPy的索引与切片(IndexingSlicing)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【数据挖掘】NumPy的索引与切片(IndexingSlicing)