mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7mobile wallpaper 8mobile wallpaper 9mobile wallpaper 10mobile wallpaper 11mobile wallpaper 12mobile wallpaper 13mobile wallpaper 14mobile wallpaper 15mobile wallpaper 16mobile wallpaper 17mobile wallpaper 18mobile wallpaper 19mobile wallpaper 20mobile wallpaper 21mobile wallpaper 22mobile wallpaper 23
745 字
2 分钟
笔记|数据分析学习笔记06|索引与切片

本系列所有文章都放在数据科学标签,总目录如下:

合集|数据分析学习笔记|系列总目录

上一篇:笔记|数据分析学习笔记05|ndarray的数据类型


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, step
print(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 的运算,包括算术运算、广播机制和矩阵乘法。

下一篇:笔记|数据分析学习笔记07|ndarray的运算


分享

如果这篇文章对你有帮助,欢迎分享给更多人!

笔记|数据分析学习笔记06|索引与切片
https://luq-blog.xyz/posts/2026-07-01-data-notes-06-indexing-slicing/
作者
Luquiescene
发布于
2026-07-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录