Python NumPy 实现区间元素查找与索引提取

Hazel
Hazel
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在 Python NumPy 中查找区间内元素索引的方法。通过自定义函数结合布尔运算,实现类似 MATLAB find 的功能,并深入解析 np.where 的正确用法及括号重要性,帮助开发者高效处理多维数组的区间筛选与元素提取。

在尝试使用 NumPy 的 where 函数时,原本期望它能像 MATLAB 的 find 函数那样便捷地返回区间内元素的索引位置,但经过多次尝试并未直接找到对应功能(也可能是本人尚未发现相关用法)。

因此,编写了一个自定义函数,用于在多维数组中查找位于特定开区间内的元素位置。

import numpy as np
def find(arr,min,max):
 pos_min = arr>min
 pos_max = arr<max
 pos_rst = pos_min & pos_max
 return np.where(pos_rst == True)#where的返回值刚好可以用[]来进行元素提取
 
 
a=np.arange(10).reshape(2,5)
 
 
pos=find(a,a>3,a<=7)
print(a[pos])#where的返回值刚好可以用[]来进行元素提取

对函数进行了改进,使其语法结构更接近 MATLAB 的风格,提升了使用的直观性。

def find(arr,pos_min,pos_max):
 #pos_min = arr>=min
 #pos_max = arr<max
 pos_rst = pos_min & pos_max
 return np.where(pos_rst == True)#where的返回值刚好可以用[]来进行元素提取

通过上述实践,重新梳理了 Python NumPy 中 where 函数的真正用法,虽然过程有些曲折,但最终理清了逻辑。

pos=np.where( (a>=3) & (a<8)) #非常要注意这个括号 没有括号估计内部执行顺序不对,捣腾不出来的,具体原因可评论留言
print (a[pos])

这是改进后的版本,代码逻辑更加简洁,且语法风格贴近 MATLAB,便于熟悉 MATLAB 的开发者上手。

以上关于 Python 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 算法库。