首页 > 解决方案 > numpy.argmin 给了我最大的元素索引

问题描述

我在使用 numpy 和 argmin 时遇到了一些麻烦。好像 argmin 正在返回最大元素的索引。此示例代码可能会澄清这种情况:

for i in range(20):                
            indmin = np.argmin(M[n-1, 1:-1])
            print("M[n-1, indmin] = ", M[n-1, indmin])

            print("indmin = ", indmin)

            M[n-1, indmin] = inf

这段代码的输出是:

M[n-1, indmin] =  5.806069439930625
indmin =  1150
M[n-1, indmin] =  100000000.0
indmin =  1150
M[n-1, indmin] =  100000000.0
indmin =  1150
M[n-1, indmin] =  100000000.0
indmin =  1150
...

M[n-1,-1:1] 包含大约从 0 到 15 的值。这里发生了什么?

编辑:n = 813;inf = 100000000

链接到 M 转储:[ http://www.mediafire.com/file/wjbk11tiafjo3do/probarray/file][1]

标签: numpymin

解决方案


尝试:

for i in range(20):                
            indmin = np.argmin(M[n-1, 1:-1])
            print("M[n-1, indmin] = ", M[n-1, indmin])

            print("indmin = ", indmin)

            M[n-1, indmin+1] = inf # correction, the argmin was taken with an offset of 1

argmin 的参数是M[n-1, 1:-1],因此您获得的索引不是与 的索引匹配的索引M。有 1 个偏移。


推荐阅读