You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NumPy获取二维数组中所有最大值的索引?

获取二维NumPy数组所有最大值的索引

嘿,这问题其实很好解决!你现在的代码只提取了第一个最大值的坐标,要拿到所有符合条件的索引,只需要对np.where的结果做个简单的打包处理就行,我给你一步步拆解:

核心思路

  1. 先确定数组中的最大值:用pixel.max()就能快速拿到全局最大值
  2. 定位所有最大值的位置:np.where(pixel == max_val)会返回两个数组,分别对应所有最大值的行索引和列索引
  3. 转换成你需要的元组列表格式:用zip()把行、列索引一一配对,再转成列表就搞定了

完整代码示例

import numpy as np
pixel = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 189, 12, 0, 0, 1, 0, 0, 0, 0], [0, 6, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 203, 9, 0], [0, 0, 0, 0, 0, 0, 0, 12, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 5, 245, 0, 0, 0, 7, 4, 0], [0, 0, 0, 0, 0, 0, 0, 250, 8, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

# 1. 获取数组的全局最大值
max_value = pixel.max()
# 2. 找到所有等于最大值的行、列索引
row_indices, col_indices = np.where(pixel == max_value)
# 3. 打包成[(行, 列)]的列表格式
max_positions = list(zip(row_indices, col_indices))

print("所有最大值的索引:", max_positions)
print(pixel)

运行结果

执行这段代码后,你会得到输出:

所有最大值的索引: [(8, 7)]

(因为你的示例数组里只有一个最大值250,要是有多个最大值的话,列表里会自动包含所有对应的坐标元组)

拓展说明

如果是更高维度的数组,这个方法同样适用——np.where会返回对应维度的索引数组,只需要把所有索引数组一起传入zip(),就能得到每个最大值的多维坐标元组啦。

内容的提问来源于stack exchange,提问作者Bakira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 10:47:43