multiplicar - matrices en python numpy
¿Hay un código de una línea para encontrar el valor máximo en una matriz? (4)
Por matriz, supongo que te refieres a una 2da. Lista.
max([max(i) for i in matrix])
Para encontrar el valor máximo en una matriz de números, podemos codificar 5 líneas para resolver el problema:
ans = matrix[0][0]
for x in range(len(matrix)):
for y in range(len(matrix[0])):
ans = max(ans, matrix[x][y])
return ans
¿Hay una solución de una línea para este problema? El que se me ocurrió es bastante incómodo en realidad:
return max(max(matrix, key=max))
o
return max(map(max, matrix))
También puede aplanar su matriz:
from itertools import chain
flatten = chain.from_iterable
max(flatten(matrix))
usando numpy.amax
:
import numpy as np
>>> my_array
array([[1, 2, 3],
[9, 8, 6]])
>>> np.amax(my_array)
9
Puede usar la expresión del generador para encontrar el máximo en su matriz. De esta forma, puede evitar crear la lista completa de elementos de matriz en la memoria.
maximum = max(max(row) for row in matrix)
en lugar de enumerar la comprensión como se da en una respuesta anterior aquí
maximum = max([max(row) for row in matrix])
Esto es de PEP (la sección de razonamiento ):
... muchos de los casos de uso no necesitan tener una lista completa creada en la memoria. En cambio, solo necesitan iterar sobre los elementos uno a la vez.
...
Las expresiones de generador son especialmente útiles con funciones como sum (), min () y max () que reducen una entrada iterable a un solo valor
...
La utilidad de las expresiones del generador se mejora mucho cuando se combina con funciones de reducción como sum (), min () y max () .
Además, eche un vistazo a esta publicación de SO: Expresiones de Generador vs. Comprensión de Lista .