Heim > Backend-Entwicklung > Python-Tutorial > Wie kann die „Meshgrid'-Funktion von NumPy alle Kombinationen von Array-Werten effizient generieren?

Wie kann die „Meshgrid'-Funktion von NumPy alle Kombinationen von Array-Werten effizient generieren?

Mary-Kate Olsen
Freigeben: 2024-12-21 01:24:09
Original
216 Leute haben es durchsucht

How Can NumPy's `meshgrid` Function Efficiently Generate All Combinations of Array Values?

Verwendung von NumPy für effiziente Array-Kombinationen

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.

Effiziente Lösung mit NumPy

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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage