2024-05-08 17:20:24 发布
网友
如何获得多维NumPy数组中最大值的位置(索引)
(编辑)我指的是一个已被删除的旧答案。被接受的答案跟在我的后面。我同意argmax比我的答案好
argmax
这样做不是更具可读性/直观性吗
numpy.nonzero(a.max() == a) (array([1]), array([0]))
或者
numpy.argwhere(a.max() == a)
您只需编写一个函数(仅适用于2d):
def argmax_2d(matrix): maxN = np.argmax(matrix) (xD,yD) = matrix.shape if maxN >= xD: x = maxN//xD y = maxN % xD else: y = maxN x = 0 return (x,y)
{a1}方法应该会有所帮助
更新
(阅读评论后)我相信argmax()方法也适用于多维数组。链接文档给出了一个示例:
argmax()
>>> a = array([[10,50,30],[60,20,40]]) >>> maxindex = a.argmax() >>> maxindex 3
更新2
(感谢KennyTM的注释)您可以使用unravel_index(a.argmax(), a.shape)以元组的形式获取索引:
unravel_index(a.argmax(), a.shape)
>>> from numpy import unravel_index >>> unravel_index(a.argmax(), a.shape) (1, 0)
(编辑)我指的是一个已被删除的旧答案。被接受的答案跟在我的后面。我同意
argmax
比我的答案好这样做不是更具可读性/直观性吗
或者
您只需编写一个函数(仅适用于2d):
{a1}方法应该会有所帮助
更新
(阅读评论后)我相信
argmax()
方法也适用于多维数组。链接文档给出了一个示例:更新2
(感谢KennyTM的注释)您可以使用
unravel_index(a.argmax(), a.shape)
以元组的形式获取索引:相关问题 更多 >
编程相关推荐