Python NumPy数组过滤:布尔索引与条件筛选实战

码头散步
码头散步
发布时间:2026-10-12| 3人浏览过
原创

本文详解Python NumPy中的数组过滤技术,介绍如何利用布尔索引列表和条件表达式筛选数组元素。通过硬编码布尔值与动态生成过滤器两种方式的对比实例,演示如何提取大于特定值或偶数的元素,帮助开发者高效处理数据子集。

数组过滤

从现有数组中选取部分元素并构建新数组的操作被称为过滤(filtering)。

在 NumPy 库中,实现数组过滤主要依赖布尔索引列表。

所谓布尔索引列表,是指其元素与目标数组索引一一对应的布尔值序列。

当索引位置对应的布尔值为 True 时,该位置的元素会被保留在过滤后的新数组中;若为 False,则该元素将被排除。

实例

以下代码利用索引 0、2 和 4 对应的元素构建数组:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

运行上述代码

上述示例的输出结果为 [61, 63, 65],其原理如下:

因为生成的过滤器数组中,索引 0、2 和 4 对应的值为 True,所以仅包含这些索引位置的元素。

创建过滤器数组

在前面的示例中,True 和 False 值是手动硬编码的。但在实际应用中,通常需要根据特定条件动态生成过滤器数组。

实例

以下代码创建一个过滤器数组,仅返回大于 62 的元素:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# 创建一个空列表
filter_arr = []
# 遍历 arr 中的每个元素
for element in arr:
  # 如果元素大于 62,则将值设置为 True,否则为 False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

运行上述代码

实例

以下代码创建一个过滤器数组,仅返回原始数组中的偶数元素:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# 创建一个空列表
filter_arr = []
# 遍历 arr 中的每个元素
for element in arr:
  # 如果元素可以被 2 整除,则将值设置为 True,否则设置为 False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

运行上述代码

直接从数组创建过滤器

此类操作在 NumPy 中极为常见,NumPy 提供了简洁高效的解决方案。

我们可以在条件判断中直接传入数组对象,而非遍历迭代变量,其运行效果符合预期。

实例

以下代码创建一个过滤器数组,仅返回大于 62 的元素:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

运行上述代码

实例

以下代码创建一个过滤器数组,仅返回原始数组中的偶数元素:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

运行上述代码

关于 Python NumPy 数组过滤的介绍至此结束,更多相关 NumPy 数组过滤内容可查阅本站历史文章或继续浏览后续相关文章,感谢支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。