我想找到每个数组中最大值的索引。例如:[[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。但是我想要一个简单的输出,就像上面的例子一样。
4条答案
按热度按时间ktca8awb1#
我有两个解决方案给你。数字1:你的输入是一个numpy数组
第二:你的输入是(和原来的问题一样)一个列表的列表。没有numpy你也能解决
请注意,您的输入列表列表有一个多余的括号...
r6l8ljro2#
这可以通过使用内置的
max
函数和数组index
方法来完成,而不需要任何库。对于每个数组,我们可以使用max
找到最大值,然后使用index
方法找到该值的索引(如果数字出现多次,则将返回第一次出现的索引)。该输出:
注意:我索引了
input_array
的第零个元素,因为在内部数组之前有两级括号。我不知道这是故意的还是打字错误,所以我把它留了下来,以防它是故意的。如果你的输入数组没有额外的级别,例如input_array = [[7,15,3,10],[2,6,9,0],[20,45,71,500]]
,那么你可以在函数中删除0索引。zhte4eai3#
尝试将列表转换为一个numpy数组,如果您想坚持使用一个函数来完成这项工作,可以使用类似的方法
8yoxcaq74#
下面的代码将在三维数组中找到最大的数字,而不是每行中的最大数字:
由于最大的数字是500,在三维数组中,它的索引是[0,2,3],这就是为什么它返回0作为第一个维度