python 从每个多维numpy数组中查找最大值的索引

agxfikkp  于 2023-06-20  发布在  Python
关注(0)|答案(3)|浏览(191)

我想从每个数组中找到最大值的索引。例如:[1,2,3,4],[5,10,2,3],并且期望输出是3,1。
电流输入:

import numpy as np

def display_max(input_array):
b = np.max(input_array)
c = np.where(input_array==b)

return c

display_max([[[7,15,3,10],[2,6,9,0],[20,45,71,500]]])

电流输出:

(array([0], dtype=int64), array([2], dtype=int64), array([3], dtype=int64))

我很困惑为什么第一个数组没有显示任何值,因为输出必须是1。否则我想要一个简单的输出像上面的例子。
好心帮忙。谢谢

v6ylcynt

v6ylcynt1#

下面的代码将在三维数组中找到最大的数字,而不是每行中的最大数字:

np.max(input_array)

由于最大的数字是500,在三维数组中,它的索引是[0,2,3],这就是为什么它返回0作为第一个维度

brqmpdu1

brqmpdu12#

我有两个解决方案给你。数字1:你的输入是一个numpy数组

import numpy as np    
np.argmax(np.array([[7,15,3,10],[2,6,9,0],[20,45,71,500]]), axis=1)

第二:你的输入是(和原来的问题一样)一个列表的列表。没有numpy你也能解决

def display_max_list_of_lists(input_list):
    """find the indicees of the maximum values of lists of lists"""
    res = []
    # loop over list of lists
    for l in input_list:
        # find index of max using a list comprehension
        i0 = [i for i in range(len(l)) if l[i]==max(l)][0]
        res.append(i0)

    return res

print(display_max_list_of_lists([[7,15,3,10],[2,6,9,0],[20,45,71,500]]))

请注意,您的输入列表列表有一个多余的括号...

sgtfey8w

sgtfey8w3#

尝试将列表转换为一个numpy数组,如果您想坚持使用一个函数来完成这项工作,可以使用类似的方法

import numpy as np

def display_max(input_array):
    max_indices = np.argmax(np.array(input_array), axis=1)
    return max_indices

max_indices = display_max([[[7,15,3,10],[2,6,9,0],[20,45,71,500]]])
print(max_indices)

相关问题