En python, ¿cuál es más rápido?numpy.max o max? ¿Cuál es más rápido?
numpy.max(), numpy.min()
o
max(), min()
Mi lista/longitud de la matriz varía de 2 a 600. ¿Cuál debo utilizar para ahorrar algo de tiempo de ejecución?
En python, ¿cuál es más rápido?numpy.max o max? ¿Cuál es más rápido?
numpy.max(), numpy.min()
o
max(), min()
Mi lista/longitud de la matriz varía de 2 a 600. ¿Cuál debo utilizar para ahorrar algo de tiempo de ejecución?
bien de mis tiempos se deduce si ya tiene variedad numpy a
se debe utilizar a.max
(la fuente dice que es lo mismo que si np.max
a.max
disponible). Pero si tiene una lista incorporada, la mayoría de las veces toma convirtiendo en np.ndarray => es por eso que max
es mejor en sus tiempos.
En esencia: si np.ndarray
continuación a.max
, si list
y sin necesidad de toda la maquinaria de np.ndarray
continuación norma max
.
Probablemente sea mejor si utiliza algo como el Python timeit module para probarlo usted mismo. De esta forma, puede probar sus propios datos en su propio entorno, en lugar de depender de terceros con diversos datos y entornos de prueba que no son necesariamente representativos del suyo.
Intenté eso en una lista aleatoria de 600 números de coma flotante. || np.max() + np.min() -> 1.093 mseg || max() + min() -> 0.092 mseg – Froyo
numpy.min
y numpy.max
tienen una semántica ligeramente diferente (y firmas de llamada) a los builtins, por lo que la elección no debe tener que ver con la velocidad. Use las versiones numpy si necesita poder manejar datos multidimensionales de manera sana. Si solo está usando listas de Python u otras cosas que desconocen la dimensionalidad, use las construcciones internas.
También me interesó esto y probé las tres variantes con perfplot (un pequeño proyecto mío). Resultado: no se va a equivocar con a.max()
.
Código para reproducir la trama:
import numpy
import perfplot
perfplot.show(
setup=lambda n: numpy.random.rand(n),
kernels=[
max,
numpy.max,
lambda a: a.max()
],
labels=['max(a)', 'numpy.max(a)', 'a.max()'],
n_range=[2**k for k in range(20)],
logx=True,
logy=True,
xlabel='len(a)'
)
que sin duda debe probar y descubrir por su situación específica, pero mi primer instinto es que dependería de si sus iterables son " vainilla "python iterables o numpy iterables. – jedwards
Si los datos están en ** 'list' **, usaría vainilla' max'. Si están en un numpy ** 'array' ** Usaría' numpy.max'. Convertir una lista en una matriz numpy es una operación bastante costosa –