Heim > Backend-Entwicklung > Python-Tutorial > Wie finde ich effizient Zeilenindizes mit mehreren Werten in einem NumPy-Array?

Wie finde ich effizient Zeilenindizes mit mehreren Werten in einem NumPy-Array?

Barbara Streisand
Freigeben: 2024-12-12 18:44:11
Original
458 Leute haben es durchsucht

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

Wie finde ich die Zeilenindizes mehrerer Werte in einem NumPy-Array?

NumPy bietet mehrere Ansätze, um die Zeilenindizes bestimmter Werte in einem NumPy-Array zu finden:

Ansatz Nr. 1: NumPy Rundfunk

result = np.where((X==searched_values[:,None]).all(-1))[1]
Nach dem Login kopieren

Ansatz Nr. 2: Speichereffizienter Ansatz mit np.ravel_multi_index

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

Ansatz Nr. 3: Speichereffizient Annäherung mit np.searchsorted

dims = X.max(0) + 1
X1D = np.ravel_multi_index(X.T,dims)
searched_valuesID = np.ravel_multi_index(searched_values.T,dims)
sidx = X1D.argsort()
out = sidx[np.searchsorted(X1D,searched_valuesID,sorter=sidx)]
Nach dem Login kopieren

Np.ravel_multi_index verstehen

np.ravel_multi_index wandelt mehrdimensionale Indizierungstupel in lineare Indizes für ein Raster um. Es geht davon aus, dass jede Spalte eine Dimension darstellt, und verwendet die Gitterform, um lineare Indizes zu berechnen.

Zum Beispiel mit X:

X = np.array([[4, 2],
              [9, 3]])
Nach dem Login kopieren

und dims = [10, 7], die erste Zeile von X (4, 2) wird in den linearen Index 30 umgewandelt. Dies entspricht Zeile 4 und Spalte 2 auf der Raster:

dims = X.max(0) + 1 # [10, 7]
np.ravel_multi_index(X.T, dims) # [30, 66]
Nach dem Login kopieren

Abmessungen für eindeutige lineare Indizes auswählen

Um eindeutige lineare Indizes sicherzustellen, sollten die Abmessungen des Rasters auf die maximale Ausdehnung jeder Achse des Rasters eingestellt werden Eingabearray X. Dies kann erreicht werden, indem 1 zum Maximalwert jeder Spalte in X hinzugefügt wird.

Das obige ist der detaillierte Inhalt vonWie finde ich effizient Zeilenindizes mit mehreren Werten in einem NumPy-Array?. 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