在二维数组中查找最大值

Shu*_*uki 10 arrays iterable list max python-3.x

我试图找到一种优雅的方法来找到二维数组中的最大值.例如对于这个数组:

[0, 0, 1, 0, 0, 1] [0, 1, 0, 2, 0, 0][0, 0, 2, 0, 0, 1][0, 1, 0, 3, 0, 0][0, 0, 0, 0, 4, 0]
Run Code Online (Sandbox Code Playgroud)

我想提取值'4'.我想在最大范围内做一个最大值,但我正在努力执行它.

fal*_*tru 12

最大数量的最大值(map(max, numbers)产量1,2,2,3,4):

>>> numbers = [0, 0, 1, 0, 0, 1], [0, 1, 0, 2, 0, 0], [0, 0, 2, 0, 0, 1], [0, 1, 0, 3, 0, 0], [0, 0, 0, 0, 4, 0]

>>> map(max, numbers)
<map object at 0x0000018E8FA237F0>
>>> list(map(max, numbers))  # max numbers from each sublist
[1, 2, 2, 3, 4]

>>> max(map(max, numbers))  # max of those max-numbers
4
Run Code Online (Sandbox Code Playgroud)


小智 8

不像 falsetru 的回答那么短,但这可能是你的想法:

>>> numbers = [0, 0, 1, 0, 0, 1], [0, 1, 0, 2, 0, 0], [0, 0, 2, 0, 0, 1], [0, 1, 0, 3, 0, 0], [0, 0, 0, 0, 4, 0]
>>> max(max(x) for x in numbers)
4
Run Code Online (Sandbox Code Playgroud)


小智 7

解决此问题的另一种方法是使用函数numpy.amax()

>>> import numpy as np
>>> arr = [0, 0, 1, 0, 0, 1] , [0, 1, 0, 2, 0, 0] , [0, 0, 2, 0, 0, 1] , [0, 1, 0, 3, 0, 0] , [0, 0, 0, 0, 4, 0]
>>> np.amax(arr)
Run Code Online (Sandbox Code Playgroud)

  • 在各个方面都比接受的答案更好 (3认同)

afg*_*ani 5

>>> numbers = [0, 0, 1, 0, 0, 1], [0, 1, 0, 2, 0, 0], [0, 0, 2, 0, 0, 1], [0, 1, 0, 3, 0, 0], [0, 0, 0, 0, 4, 0]
Run Code Online (Sandbox Code Playgroud)

您可以添加key参数如下,max以查找二维数组/列表中的最大值

>>> max(max(numbers, key=max))
4
Run Code Online (Sandbox Code Playgroud)