图片来源:《星空列车与白的旅行》CG及二创
745 字
2 分钟
笔记|数据分析学习笔记06|索引与切片
本系列所有文章都放在
数据科学标签,总目录如下:
6.1 索引与切片概述
索引与切片是从数组中提取目标数据的核心手段。NumPy 的索引机制比 Python 原生列表更加强大,不仅支持常规的位置索引和切片,还支持布尔条件筛选等高级用法。
下表列出了常用的索引/切片类型及其用法:
| 类型 | 描述 |
|---|---|
| 基本索引 | 通过整数索引直接访问元素,索引从 0 开始 |
| 行/列切片 | 使用冒号 : 切片语法选择行或列的子集 |
| 连续切片 | 从起始索引到结束索引按步长切片 |
使用 slice 函数 | 通过 slice(start, stop, step) 定义切片规则 |
| 布尔索引 | 通过布尔条件筛选满足条件的元素,支持逻辑运算符 &、| |
6.2 一维数组的索引与切片
一维数组的索引与切片规则和 Python 列表完全一致。
import numpy as np
# 创建一维数组arr = np.array([17, 63, 17, 8, 99, 7, 27, 14, 76, 59, 26, 4, 75, 76, 62, 78, 84, 58, 95, 33])print(arr)输出:
[17 63 17 8 99 7 27 14 76 59 26 4 75 76 62 78 84 58 95 33]基本索引与各类切片:
print(arr[0]) # 索引第一个元素print(arr[:]) # 获取全部数据print(arr[2:5]) # start:end+1,左闭右开区间print(arr[slice(2, 15, 3)]) # start, end+1, stepprint(arr[(arr > 10) & (arr < 70)]) # 布尔索引输出:
17[17 63 17 8 99 7 27 14 76 59 26 4 75 76 62 78 84 58 95 33][17 8 99][17 7 76 4 62][17 63 17 27 14 59 26 62 58 33]要点说明:
arr[0]:通过整数下标直接访问单个元素。arr[:]:不传参数表示获取全部元素。arr[2:5]:取索引 2 到 4 的元素(左闭右开)。arr[slice(2, 15, 3)]:等价于arr[2:15:3],从索引 2 开始每隔 3 个取一个,到索引 14 为止。arr[(arr > 10) & (arr < 70)]:布尔索引,筛选出同时满足大于 10 且小于 70 的所有元素。注意使用&而非and。
6.3 二维数组的索引与切片
二维数组的索引需要同时指定行索引和列索引,用逗号分隔。
# 创建二维数组(4行8列)arr = np.random.randint(1, 100, (4, 8))print(arr)输出:
[[11 7 76 19 4 78 18 44] [17 19 80 91 60 72 76 30] [46 7 64 79 25 19 94 34] [79 43 95 4 19 71 53 23]]各种索引与切片操作:
print(arr[1, 3]) # 索引第2行第4列的元素print(arr[1, :]) # 获取第2行的所有数据print(arr[1, 2:5]) # 获取第2行的第3到第5个元素print(arr[arr > 50]) # 获取所有大于50的元素print(arr[2][arr[2] > 50]) # 获取第3行中大于50的元素print(arr[:, 3]) # 获取第4列的所有元素输出:
91[17 19 80 91 60 72 76 30][80 91 60][76 78 80 91 60 72 76 64 79 94 79 95 71 53][64 79 94][19 91 79 4]要点说明:
arr[1, 3]:先行后列,取第 2 行第 4 列的单个元素。arr[1, :]:取第 2 行的全部列。冒号:表示”全部”。arr[1, 2:5]:取第 2 行中索引 2 到 4 的元素。arr[arr > 50]:对整个数组进行布尔筛选,返回一维数组(所有满足条件的元素展平排列)。arr[2][arr[2] > 50]:先取第 3 行,再在该行内筛选大于 50 的元素。arr[:, 3]:冒号表示取所有行,3表示第 4 列。
6.4 本节小结
本节完成了以下内容:
- 掌握了一维数组的基本索引、切片、
slice函数和布尔索引。 - 掌握了二维数组的行列索引、行列切片和条件筛选。
- 理解了布尔索引中使用
&(与)、|(或)进行组合条件筛选。
下一节我们将学习 ndarray 的运算,包括算术运算、广播机制和矩阵乘法。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
笔记|数据分析学习笔记06|索引与切片
https://luq-blog.xyz/posts/2026-07-01-data-notes-06-indexing-slicing/ 部分信息可能已经过时
相关文章 智能推荐
1
笔记|数据分析学习笔记14|Series的创建、属性与索引
理工研习 本节介绍 Pandas Series 的结构、创建方法、常用属性以及索引访问方式,掌握 Series 的核心使用方法。
2
笔记|数据分析学习笔记05|ndarray的数据类型
理工研习 学习NumPy中ndarray支持的数据类型,包括布尔、整数、浮点数和复数类型。
3
笔记|数据分析学习笔记07|ndarray的运算
理工研习 学习NumPy中ndarray的算术运算、广播机制与矩阵乘法,理解数组运算与列表运算的本质区别。
4
笔记|数据分析学习笔记03|ndarray的特性与属性
理工研习 本节介绍 NumPy 数组(ndarray)的核心特性与常用属性,帮助读者深入理解 ndarray 的多维性、同质性以及各项属性的含义与用法。
5
笔记|数据分析学习笔记11|排序函数
理工研习 本节介绍 NumPy 中的排序函数,包括数组排序、索引排序、去重与成员检测,掌握数据整理的核心方法。
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)
.webp)