NumPy 数组切片

2025 年 8 月 20 日 | 阅读 10 分钟

NumPy 数组切片是 Python 中一种提取方法,它允许我们选择和提取数组的一部分,从而有效地处理大型数据集。它允许我们访问数组中的元素。

NumPy Array Slicing

NumPy 数组切片的语法

NumPy 数组切片的语法如下:

NumPy 数组切片的基本语法包含三个部分,它们是:

  • start:这是切片开始的索引。
  • stop:这是切片停止或结束的索引(不包含最后一个元素)。
  • step:这是决定跳到后续元素的步长值。

关于 Start、Stop 和 Step,请记住以下几点:

注意

Start:如果我们不包含 start 值,则默认的 start 值将是数组的第一个元素。

Stop:如果我们不包含 stop 值,则它将一直到最后一个值并包含它。

Step:如果我们不包含 stop 值,则默认的步长为 1。

一维 NumPy 数组切片

一维数组是最简单的数组,我们可以指定 start、stop 和 step。对一维 NumPy 数组进行切片也非常简单。让我们看几个例子。

示例

输出

From index 3 to index 7 (exclusive):  [6 7 3 5]
From 0th index to the 8th index(exclusive) with a step size of 2:  [1 2 7 5]
From 1st index up to the last element:  [6 7 3 5 8 4]
From start to end:  [1 9 2 6 7 3 5 8 4]

说明

在上面的一维数组示例中,这是最简单的数组形式,我们已将数组从索引 3 切片到索引 7,其中不包含索引 7 的元素。我们已从索引 0 到索引 8(不包含)切片,步长为 2,这意味着将处理交替的元素。然后,我们从索引 1 切片到最后一个元素。

二维 NumPy 数组切片

在二维 NumPy 数组切片中,它包含行和列。每一行和每一列都有一个 start、stop 和 set 值。

让我们看看二维 NumPy 数组切片的语法:

语法

在这里,我们可以看到行和列都包含 start、stop 和 step 值。

现在,我们来看一些例子,以便更好地理解二维数组切片。

示例

输出

Printing the first row: [[1 2 3 4]]
Printing the fourth column: [ 4 17]
Printing the 2 rows and  2 columns: [[ 1  2]
 [11 13]]
Printing the first row and first 3 columns: [[1 2 3]]
Printing the first row and first 4 columns: [[ 1  2  3  4]
 [11 13 15 17]]

说明

在上面的二维 NumPy 数组切片示例中,我们有两个数组作为输入。我们打印了第一行,然后打印了第四列。之后,我们打印了第 2 行和第 2 列,第 1 行和第 3 列,最后打印了第 1 行和第 4 列。

三维 NumPy 数组切片

正如我们所研究的,一维数组是最简单的数组,二维数组包含行和列,三维 NumPy 数组则更进一步。

三维 NumPy 数组切片包含三个部分:

  • 深度

让我们看一个三维 NumPy 数组的例子,以了解行、列以及最重要的是深度。

示例

输出

Prinitng the 3D array:  [[[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]

 [[13 14 15 16]
  [17 18 19 20]
  [21 22 23 24]]]
First depth of the block:  [[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
Prinitng the element at depth=1, row=2 and column=3:  24
Elements in depth 1 and column2:  [15 19 23]

说明

在上面的三维 NumPy 数组切片示例中,我们看到三维 NumPy 数组包含行、列和深度。我们还学习了如何对三维数组进行切片。我们首先按原样打印了三维数组,然后打印了块的第 1 层深度。然后,我们继续打印深度=1、行=2 和列=3 处的元素,该元素是 24。最后,我们打印了深度为 1 且列为 2 的元素,即 [15 19 23]。

使用切片修改数组元素

我们可以使用一些参数修改数组中的元素,例如:

  • Start 参数:Start 参数决定从哪里开始修改元素。
  • Stop 参数:Stop 参数定义了修改元素的停止位置。一旦达到该位置,修改将停止,不包含 stop 索引处的元素。
  • Start 和 stop 参数:Start 和 stop 参数决定了修改元素的范围。它包含 start 索引处的元素,并排除 stop 索引处的元素。
  • Start、stop 和 step 参数:Start、stop 和 step 参数决定了可以以 step 值进行元素修改的范围。例如,如果 step 值为 2,则将修改每隔一个元素。

让我们通过一个例子来深入理解参数的用法:

示例 1:Start 参数

示例

输出

[1 6 7 7 7 7]

说明

在上面的代码中,我们使用了 Start 参数来确定我们希望开始更改数字的位置。在这里,我们指定从索引 2 开始,数字必须更改为 7。

示例 2:Stop 参数

示例

输出

[14 14 14  2  8  4]

说明

在上面的代码中,我们使用了 Stop 参数来确定要修改数字的停止位置,并且在达到指定数字时,过程将停止。在这里,我们指定直到第 3 个索引为止,项必须修改为数字 14。

示例 3:Start 和 Stop 参数

示例

输出

[ 1 12 12 12  8  4]

说明

在上面的代码中,我们使用了 Start 和 Stop 参数来确定我们希望修改数字的范围。在这里,我们指定项必须从第 1 个索引修改到第 4 个索引。这意味着在修改中将包含第 1 个索引,但排除第 4 个索引。

示例 4:Start、Stop 和 Step 参数

示例

输出

[ 1 12  3 12  8  4]

说明

在上面的代码中,我们使用了 Start、Stop 和 Step 参数来确定我们希望修改数字的范围,但带有步长值。在这里,我们指定项必须从第 1 个索引修改到第 4 个索引,步长值为 2。这意味着列表中的交替数字将被修改;因此,我们可以看到只有两个数字被修改了。

负索引切片

在负索引切片中,数组以反向顺序计数或处理。

让我们看一些例子来理解负索引切片:

示例

输出

Slicing the last 4 elements of the array:  [ 9 11 13 15]
slicing elements between 2nd last and 4th last element:  [ 9 11]
using the start, stop, and step parameters using slicing the array in reverse order:  [15 11  7  3]

说明

在上面的示例中,我们使用负索引切片来反向处理数组。我们使用负索引,数字从最后一个项目(-1)开始,然后继续。我们切片了最后 4 个元素,第 2 个和第 4 个最后元素之间的元素,并使用了 start、stop 和 step 参数。

使用负切片反转 NumPy 数组

我们可以使用负索引切片来反转 NumPy 数组。让我们通过一个例子来看看如何反转数组。

示例

输出

The Reversed Numbers are:  [15 13 11  9  7  5  3  1]

说明

在上面的示例中,我们使用负索引切片反转了数组。我们使用切片符号 [: : -1] 反转了数字。

结论

我们已经学习了关于 NumPy 数组切片的几乎所有内容。从基本语法开始,我们转向了 1D、2D 和 3D 数组。我们通过以下方式学习了如何使用切片修改数组:Start 参数、Stop 参数、Start 和 Stop 参数,以及 Start、Stop 和 Step 参数。我们还涵盖了负索引切片,在其中研究了反转 NumPy 数组。

NumPy 数组切片常见问题解答

1. 什么是 NumPy 中的数组切片?

NumPy 数组切片是 Python 中一种提取方法,它允许我们选择和提取数组的一部分,从而有效地处理大型数据集。它允许我们访问数组中的元素。

2. NumPy 数组切片的基本语法是什么?

基本语法包括三个部分:start、stop 和 step。

语法

3. 如果我将 start、end 或 step 留空会怎样?

  • 如果我们留下 start 空白,例如 arr[ :2],则它将包含从第 0 个
  • 如果我们留下 stop 空白,例如 arr[1 : ],则它将一直到最后一个元素。
  • 如果我们留下 step 空白,例如 arr[1 : 2 : ],则它将采用默认步长值 1。

4. 可以使用负索引对数组进行切片吗?

是的,我们可以使用负索引对数组进行切片。数组以反向顺序计数或处理。

示例

输出

Slicing the last 4 elements of the array:  [ 9 11 13 15]

5. 如何使用切片反转数组?

我们可以使用负步长值来反转数组。

示例

输出

The Reversed Numbers are:  [15 13 11  9  7  5  3  1]

下一个主题Tableau 预测示例