web-dev-qa-db-ja.com

2次元配列で最大値を見つける

2次元配列の最大値を見つけるエレガントな方法を見つけようとしています。たとえば、この配列の場合:

[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]

値「4」を抽出したいと思います。 max内でmaxを実行することを考えましたが、実行に苦労しています。

9
Shuki

最大数の最大値(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
10
falsetru

この問題を解決する別の方法は、関数 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)
5

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
2
schmy