NumPy 切片与索引

PythonBeginner
立即练习

介绍

NumPy 是一个广泛使用的 Python 库,专为科学计算而设计。它提供了高性能的数组操作和数学函数,非常适合用于数值数据分析。在本实验中,你将学习 NumPy 的切片(slicing)和索引(indexing)功能。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 96%。获得了学习者 100% 的好评率。

数组切片

切片(Slicing)是通过指定索引范围来提取数组子集的过程。NumPy 数组可以使用冒号 : 操作符进行切片。

打开 Python Shell

在终端中输入以下命令以打开 Python shell。

python3

导入 NumPy

NumPy 已经安装,你可以在 Python 代码中导入它:

import numpy as np

一维数组切片

## 创建一个一维数组
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## 从索引 2 到索引 5 切片数组
print(a[2:5])

输出:

[2 3 4]

多维数组切片

你也可以对多维数组进行切片。

## 创建一个二维数组
b = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])

## 切片前两行和前两列
print(b[:2, :2])

输出:

[[0 1]
 [3 4]]

使用布尔数组进行索引

布尔索引(Boolean Indexing)是一种强大的功能,允许我们根据条件过滤数组。你可以通过对现有数组应用逻辑运算符来创建布尔数组。

创建一个一维数组

c = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

根据条件 (c > 5) 创建布尔数组

mask = c > 5
print(mask)

输出:

[False False False False False False  True  True  True  True]

使用布尔数组过滤原始数组

print(c[mask])

输出:

[6 7 8 9]

花式索引

花式索引(Fancy Indexing)是一种使用索引数组来索引数组的方式。你可以使用这种技术提取数组中的特定元素或子集。

## 创建一个一维数组
d = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## 创建一个索引数组
indices = np.array([1, 3, 5])

## 使用花式索引提取指定索引处的元素
print(d[indices])

输出:

[1 3 5]
  • 你也可以使用花式索引为数组中的特定元素赋值。
## 创建一个一维数组
e = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

## 创建一个索引数组
indices = np.array([1, 3, 5])

## 将值 10 赋给指定索引处的元素
e[indices] = 10
print(e)

输出:

[ 0 10  2 10  4 10  6  7  8  9]

总结

恭喜!你已经完成了 NumPy 切片和索引实验。

在本实验中,你学习了 NumPy 数组切片和索引的基础知识:

  • 切片允许你通过指定索引范围来提取数组的子集。
  • 布尔索引允许你根据条件过滤数组。
  • 花式索引允许你使用索引数组提取数组中的特定元素或子集。