NumPy(Numerical Python 的缩写)是一个开源的 Python 科学计算库。通过 NumPy,Python 可以高效地处理 数组和矩阵数据,并提供大量用于 线性代数、傅里叶变换、随机数生成 等方面的功能。数组切片(Slicing) 是 NumPy 中非常重要的基础操作之一,用于从数组中 按区间、按步长 取出子数组。本文主要介绍 Python NumPy 数组(ndarray)的切片用法。

1、数组切片基础

在 Python 中,切片 是从一个给定索引位置获取元素到另一个给定索引位置的操作。

1)切片基本语法

[start : end]
[start : end : step]

参数说明:

  • start:起始索引(包含

  • end:结束索引(不包含

  • step:步长(默认值为 1)

规则说明:

  • 不写 start:默认从索引 0 开始

  • 不写 end:默认到该维度的末尾

  • 不写 step:默认步长为 1

2)基础切片示例

从索引 1 切片到索引 5(不包含 5)

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[1:5])

输出:

[2 3 4 5]

⚠️ 注意:包含 start,不包含 end

从索引 4 切片到数组末尾

print(arr[4:])

输出:

[5 6 7]

从数组开始切片到索引 4(不包含 4)

print(arr[:4])

输出:

[1 2 3 4]

2、负索引切片

负索引用于 从数组末尾开始计数

  • -1:最后一个元素

  • -2:倒数第二个元素

例如:

负索引切片

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])
print(arr[-3:-1])

输出:

[5 6]

解释:

  • -3 → 倒数第三个元素(5)

  • -1 → 倒数第一个元素(不包含)

3、步长(step)

step 用于指定 切片时的步进间隔

例如:

指定步长

从索引 1 到索引 5,每隔一个元素取一次

4、二维数组(2-D Array)切片

对于二维数组,切片语法为:

arr[row_slice, col_slice]


例如:

切片二维数组

import numpy as np

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


1)访问第二行,索引 1 到 4 的元素

print(arr[1, 1:4])

输出:

[7 8 9]


2)访问前两行的第 3 列

print(arr[0:2, 2])

输出:

[3 8]


3)切片返回一个二维数组

print(arr[0:2, 1:4])

输出:

[[2 3 4]
 [7 8 9]]


print(arr[1:5:2])

输出:

[2 4]


返回整个数组中每隔一个元素

print(arr[::2])

输出:

[1 3 5 7]

5、综合使用示例

import numpy as np

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


常见切片操作

访问所有行,从第 2 个元素开始

print(data[:, 1:])

输出:

[[2 3 4]
 [6 7 8]]


访问从第 2 行开始,每行前两个元素

print(data[1:, :2])

输出:

[[5 6]]


访问第一行所有元素

print(data[0, :])

输出:

[1 2 3 4]


访问第二行第三个元素

print(data[1, 2])

输出:

7


访问第一列所有元素

print(data[:, 0])

输出:

[1 5]


访问前两行所有元素

print(data[:2, :])


访问从第二行开始的所有元素

print(data[1:])


访问前两行,从第三个元素开始

print(data[:2, 2:])

输出:

[[3 4]
 [7 8]]


省略号(...)的使用

省略号 ... 表示 选取所有未明确指定的维度

print(data[...])

输出:

[[1 2 3 4]
 [5 6 7 8]]


使用步长进行二维切片

每隔一个元素取一次

print(data[::2, ::2])

输出:

[[1 3]
 [5 7]]


从第二行开始,每隔两个元素取一次

print(data[1::2, ::2])

输出:

[[5 7]]

推荐文档