2012-02-16 13 views
16

Esiste una funzione numpy che fornisce per un determinato array numpy il suo valore massimo-minimo, cioè numpy.max (a) - numpy.min (a)?Esiste una funzione numpy max min?

ad es.

numpy.xxx([4,3,2, 6] = 4 since max = 6, min = 2, 6 - 4 = 2) 

Motivo: aumento delle prestazioni dal max e min causerebbe due volte l'iterazione della matrice (che è nel mio caso 7,5 milioni o più numeri).

risposta

28

In effetti esiste una tale funzione: si chiama numpy.ptp() per "picco a picco".

+7

+1 ... numpy dovrebbe estendere il proprio nome di funzione a 30 caratteri. Rispondere qui sarebbe molto più veloce ... – eumiro

+0

Grazie ... Non riuscivo davvero a trovarlo ma ero vicino (guardando il peaktopeak e altri). –

+0

Internamente la funzione 'ptp' calcola il minimo e il massimo separatamente, quindi questa soluzione esegue ancora iterazioni sull'array due volte. Vedi [il codice sorgente ptp] (https://github.com/numpy/numpy/blob/e7fe68ad3ce7f91cb152df49115f353ba9d75789/numpy/core/src/multiarray/calculation.c#L308) per i dettagli. – jochen