web-dev-qa-db-fra.com

Recherche de la valeur maximale dans un tableau à deux dimensions

J'essaie de trouver un moyen élégant de trouver la valeur maximale dans un tableau à deux dimensions . Par exemple pour ce tableau:

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

Je voudrais extraire la valeur '4' . J'ai pensé faire un max dans max mais je me bats pour l'exécuter.

8
Shuki

Nombre maximal de nombres (map(max, numbers) donne 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
8
falsetru

Une autre façon de résoudre ce problème consiste à utiliser la fonction 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)
2
Khan Saad Bin Hasan

Pas aussi courte que la réponse de falsetru mais c'est probablement ce que vous aviez en tête:

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