Come ottimizzare le operazioni array multidimensionali di Numpy con Numexpr

Come massimizzare l'efficienza delle operazioni array multidimensionali di Numpy utilizzando Numexpr

CALCOLO VELOCE

Uno studio di caso del mondo reale sull’ottimizzazione delle prestazioni in Numpy

Come ottimizzare le operazioni di array Numpy multidimensionali con Numexpr. Crediti foto: Creato dall'autore, Canva.

Questo è un articolo relativamente breve. In esso, utilizzerò uno scenario del mondo reale come esempio per spiegare come utilizzare le espressioni Numexpr negli array Numpy multidimensionali per ottenere miglioramenti significativi delle prestazioni.

Non ci sono molti articoli che spiegano come utilizzare Numexpr in array Numpy multidimensionali e come utilizzare le espressioni Numexpr, quindi spero che questo possa aiutarti.

Introduzione

Di recente, mentre rivedevo alcuni dei miei vecchi lavori, sono inciampato in questo pezzo di codice:

def predict(X, w, b):    z = np.dot(X, w)    y_hat = sigmoid(z)    y_pred = np.zeros((y_hat.shape[0], 1))    for i in range(y_hat.shape[0]):        if y_hat[i, 0] < 0.5:            y_pred[i, 0] = 0        else:            y_pred[i, 0] = 1    return y_pred

Questo codice trasforma i risultati delle previsioni da probabilità a risultati di classificazione 0 o 1 nel modello di regressione logistica di machine learning.

Ma cielo, chi userebbe un for loop per iterare su un ndarray di Numpy?

Puoi prevedere che quando i dati raggiungono una certa quantità, non solo occuperanno molta memoria, ma le prestazioni saranno anche inferiori.

Ebbene sì, la persona che ha scritto questo codice ero io quando ero più giovane.

Con uno spirito di responsabilità, ho intenzione di riscrivere questo codice con la libreria Numexpr oggi.

Lungo il percorso, ti mostrerò come utilizzare Numexpr e l’espressione where di Numexpr in array Numpy multidimensionali per ottenere significativi miglioramenti delle prestazioni.

Implementazione del codice

Se non sei familiare con l’uso di base di Numexpr, puoi fare riferimento a questo articolo:

Esplorare Numexpr: un potente motore dietro le funzioni di Pandas

Migliora le prestazioni della tua analisi dei dati con le funzioni eval/query di Numexpr di Python e Pandas

towardsdatascience.com