Heim >Backend-Entwicklung >Python-Tutorial >Wie kann die „Meshgrid'-Funktion von NumPy alle Kombinationen von Array-Werten effizient generieren?
Um das numerische Verhalten einer Funktion mit sechs Parametern zu untersuchen, suchen Sie nach einer effizienten Methode zum Durchlaufen ihres Parameterraums. Zunächst haben Sie eine benutzerdefinierte Funktion verwendet, um Array-Werte zu kombinieren, gefolgt von Reduce(), um sie wiederholt anzuwenden. Dieser Ansatz war zwar funktionsfähig, erwies sich jedoch als umständlich.
Neuere Versionen von NumPy (1.8.x und höher) bieten eine weitaus bessere Lösung: numpy.meshgrid(). Diese Funktion ermöglicht die Erstellung mehrdimensionaler Arrays, die alle möglichen Kombinationen von Eingabearrays umfassen. In Ihrem Fall:
import numpy as np a = np.arange(0, 1, 0.1) combinations = np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6)
Dieser Ansatz verbessert die Leistung erheblich, wie der folgende Benchmark zeigt:
%timeit np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6) # Output: 10000 loops, best of 3: 74.1 µs per loop
Alternativ können Sie die folgende benutzerdefinierte Funktion für maximale Kontrolle verwenden:
def cartesian(arrays): arr = np.empty((len(arrays.shape), len(arrays))) for n, array in enumerate(arrays): arr[n, :] = array return arr.T.reshape(-1, len(arrays)) %timeit cartesian([a, a, a, a, a, a]) # Output: 1000 loops, best of 3: 135 µs per loop
Das obige ist der detaillierte Inhalt vonWie kann die „Meshgrid'-Funktion von NumPy alle Kombinationen von Array-Werten effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!