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

求助:如何获取Numpy数组中所有最小值的对应索引

解决Numpy数组获取所有最小值索引的问题

嘿,我明白你的需求啦——你想要找出数组里所有最小值的位置,但原来的代码只返回了其中一个,这是因为你用np.unravel_index的时候传错参数啦!np.unravel_index需要的是扁平化数组后的索引值,而不是最小值本身,所以才只拿到了第一个匹配的位置。

下面给你两种简单有效的解决方案:

方法一:用np.where获取索引

np.where可以直接返回所有满足条件的元素的行列索引,非常直观:

import numpy as np
a = np.array([[1,2],[1,4]])
minE = np.min(a)
# 获取所有等于最小值的索引
rows, cols = np.where(a == minE)
# 把索引配对成(行,列)的形式
indices = list(zip(rows, cols))
print("最小值:", minE)
print("所有索引:", indices)

运行结果会是:

最小值: 1
所有索引: [(0, 0), (1, 0)]

方法二:用np.argwhere直接得到坐标数组

np.argwhere会直接返回一个二维数组,每一行就是一个最小值的坐标:

import numpy as np
a = np.array([[1,2],[1,4]])
minE = np.min(a)
indices = np.argwhere(a == minE)
print("最小值:", minE)
print("所有索引:\n", indices)

运行结果:

最小值: 1
所有索引:
 [[0 0]
 [1 0]]

如果需要把这些索引拆成行和列的单独数组,也可以用indices[:,0]拿到所有行索引,indices[:,1]拿到所有列索引。

另外补充一下你原来代码的问题:np.unravel_index(minE, a.shape)这里,minE是1,相当于你在找扁平化数组里第1个元素的位置(索引从0开始),所以得到的是(0,1),这完全不是你想要的结果,以后要注意这个函数的参数要求哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:32