Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich effizient Zeilenindizes, die mit Werten in einem NumPy-Array übereinstimmen?

Wie finde ich effizient Zeilenindizes, die mit Werten in einem NumPy-Array übereinstimmen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 18:06:12657Durchsuche

How to Efficiently Find Row Indices Matching Values in a NumPy Array?

Suchen Sie die Zeilenindizes verschiedener Werte in einem Numpy-Array

1. Das Problem verstehen

Angesichts eines Arrays X und eines Arrays „searched_values“ besteht die Aufgabe darin, die Indizes von Zeilen in Ansatz mit NumPy Broadcasting

3. Speichereffizienter Ansatz mit np.ravel_multi_index und np.in1d
np.where((X==searched_values[:,None]).all(-1))[1]

4. np.ravel_multi_index verstehen
dims = X.max(0)+1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
                    np.ravel_multi_index(searched_values.T,dims)))[0]

np.ravel_multi_index konvertiert ein 2D-Array n-dimensionaler Indizes in lineare Indexäquivalente. Wenn beispielsweise

5. Auswählen von Dimensionen für eindeutige lineare Indizes

np.ravel_multi_index(X.T,dims)
Berücksichtigen Sie bei der Auswahl von Dimensionen für np.ravel_multi_index zum Generieren eindeutiger linearer Indizes Folgendes:

Jede Spalte im Eingabearray (X) stellt eine Achse dar des Gitters, auf das abgebildet wird.

Um eindeutige lineare Indizes sicherzustellen, sollte die maximale Ausdehnung jeder Achse berücksichtigt werden, die das Maximum darstellt Wert in jeder Spalte plus 1.

  • Für das gegebene

Das obige ist der detaillierte Inhalt vonWie finde ich effizient Zeilenindizes, die mit Werten in einem NumPy-Array übereinstimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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