Python中获取NumPy数组最值及其索引的方法

花开有时
花开有时
发布时间:2026-10-13| 6人浏览过
原创

本文介绍在Python的NumPy库中如何高效获取数组的全局及局部最值,并利用np.where函数定位最大值对应的行列索引。通过示例演示全局最大、按行/列最大值的计算,以及处理重复最大值时的索引返回逻辑,帮助开发者快速掌握相关操作。

在Python的普通列表(list)中,可以通过max(list)直接获取最大值,并使用list.index(max(list))来查找该最大值首次出现的索引位置。

然而,NumPy中的数组(array)对象并不提供index方法。为了实现类似功能,需要借助np.where函数,这是NumPy库特有的工具,普通列表无法直接使用。

首先,我们可以计算数组的全局最大值(或最小值),也可以分别计算每一行或每一列的最大值(或最小值)。

>>> a = np.arange(9).reshape((3,3))
>>> a
array([[0, 1, 2],
  [9, 4, 5],
  [6, 7, 8]])
>>> print(np.max(a))  #全局最大
8
>>> print(np.max(a,axis=0)) #每列最大
[6 7 8]
>>> print(np.max(a,axis=1)) #每行最大
[2 5 8]

接着,利用np.where函数查找最大值所在的位置。该函数返回一个元组,其中第一个数组元素代表最大值所在的行索引,第二个数组元素代表列索引。

>>> print(np.where(a==np.max(a)))
(array([2], dtype=int64), array([2], dtype=int64))
>>> print(np.where(a==np.max(a,axis=0)))
(array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))

需要注意的是,如果数组中存在多个相同的最大值,np.where会将所有最大值的位置都返回,而不仅仅是第一个。

>>> a[1,0]=8
>>> a
array([[0, 1, 2],
  [8, 4, 5],
  [6, 7, 8]])
>>> print(np.where(a==np.max(a)))
(array([1, 2], dtype=int64), array([0, 2], dtype=int64))

以上就是在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 算法库。