Python numpy.where函数完全指南:语法、参数与实战案例解析

苏见山
苏见山
发布时间:2026-10-15| 2人浏览过
原创

本文深入解析Python中numpy库的where函数,详细讲解两种核心调用语法:单参数返回非零元素索引,以及三参数根据条件返回不同值。通过数列筛选、字符串替换及多维数组处理等具体实例,帮助开发者快速掌握该函数在数据清洗和条件判断中的高效应用。

掌握Python编程技能,能够显著压缩处理日常重复性任务的时间,将原本耗时的工作缩短至几分钟甚至更短。这不仅意味着工作时间的释放,更让你有精力探索更高效的工作模式,从而全面提升职业表现与产出质量。这并非夸大其词,而是经过实践验证的技术红利。

本文将系统梳理Python中常用且高效的函数集合,旨在帮助读者在最短时间内理解其底层逻辑与运行机制。利用碎片化时间巩固这些核心函数的知识点,有助于你在实际工作场景中实现更精准、高效的数据处理与业务逻辑执行。

一、where函数的定义

where函数隶属于numpy库,使用前需确保已导入该库。其基本调用方式主要包含两种语法结构,第一种形式如下:

import numpy as np
np.where(arry)

在此种调用方式下,np.where函数会返回数组arry中所有“真值”(即非零元素)的坐标索引。换言之,该函数用于从数组中提取满足特定条件的元素,并返回这些元素在原数组中的位置索引。

另一种调用形式为:

import numpy as np
np.where(cond, x, y)

这种三参数用法中,np.where函数会根据条件cond的真假分别返回x或y的值:若条件成立则输出x,否则输出y。为帮助读者更直观地理解其定义与用法,下文将通过具体代码实例进行详细拆解。

二、where函数实例

场景一:查找数列中大于特定数值的元素索引

y = np.array([1, 5, 6, 8, 1, 7, 3, 6, 9])
print(np.where(y>5))

运行上述代码后,控制台输出结果如下:

(array([2, 3, 5, 7, 8], dtype=int64),)

上述结果表明,np.where函数成功返回了数组中数值大于5的所有元素的索引位置。

场景二:数列中大于5标记为’m_5’,否则标记为’lq_5’

y = np.array(range(1, 10))
print(y)
print(np.where(y>5, 'm_5', 'lq_5'))

执行代码后的输出结果如下:

[1 2 3 4 5 6 7 8 9] ['lq_5' 'lq_5' 'lq_5' 'lq_5' 'lq_5' 'm_5' 'm_5' 'm_5' 'm_5']

此处y是一个起始值为1、终止值为9、步长为1的等差数列。np.where函数判断y中每个元素是否大于5:若大于5则输出字符串’m_5’,否则输出’lq_5’。

场景三:数列中小于5取一个值,否则取另一个值

print(np.arange(10))
print(np.where(np.arange(10)<5, '吃苹果', '吃榴莲'))

代码执行后的部分输出结果如下:

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

[‘吃苹果’ ‘吃苹果’ ‘吃苹果’ ‘吃苹果’ ‘吃苹果’ ‘吃榴莲’ ‘吃榴莲’ ‘吃榴莲’ ‘吃榴莲’ ‘吃榴莲’]

在此例中,np.where函数针对np.arange(10)生成的数组进行判断:若元素值小于5,则输出’吃苹果’;若不满足该条件(即大于等于5),则输出’吃榴莲’。

场景四:数列中是2的倍数取一个值,否则取另一个值

y = np.array(range(1, 10))
print(y)
print(np.where(np.mod(y, 2)==0, '2b', 'n_2b'))

代码运行后的输出结果如下:

[1 2 3 4 5 6 7 8 9] ['n_2b' '2b' 'n_2b' '2b' 'n_2b' '2b' 'n_2b' '2b' 'n_2b']

此时,np.where函数对y中的数值进行模2运算:若余数为0(即为2的倍数),则输出’2b’;否则输出’n_2b’。

场景五:找出数据框中非0数据

x = np.array([[0, 1, 2], [3, 0, 0], [6, 0, 8]])
print(x[np.where(x)])

执行该段代码后,得到的结果如下:

[1 2 3 6 8]

在此场景下,np.where函数作用于数组x,筛选出所有非零元素,并生成一个新的数列结果。

至此,关于Python where函数的详细教程已介绍完毕。如需了解更多相关Python where函数的应用技巧,欢迎查阅本站往期文章或继续浏览后续内容,感谢大家的支持与关注!

相关标签:

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

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 算法库。