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

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

Barbara Streisand
Barbara StreisandOriginal
2024-12-07 06:16:13188Durchsuche

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

Suchen Sie die Zeilenindizes mehrerer Werte in einem Numpy-Array

Problem:

Wir erhalten ein NumPy-Array X und eine Reihe von Werten searched_values. Das Ziel besteht darin, die Zeilenindizes in

X = np.array([[4,  2],
              [9,  3],
              [8,  5],
              [3,  3],
              [5,  6]])

searched_values = np.array([[4, 2],
                            [3, 3],
                            [5, 6]])
Ansatz Nr. 1: NumPy Broadcasting

[0, 3, 4]
Dies Der Ansatz nutzt NumPy-Broadcasting, um elementweise Vergleiche zwischen Um Speicher zu sparen, können wir jede Zeile von X und searched_values ​​in lineare Indexäquivalente konvertieren und dann np.in1d ​​für anwenden Schnittpunkt:

Ansatz #3: Speichereffiziente Konvertierung mit np.searchsorted

np.where((X == searched_values[:, None]).all(-1))[1]
Ein weiterer speichereffizienter Ansatz mit np.searchsorted und der gleichen Philosophie des linearen Index Konvertierung:

Verstehen 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]
np.ravel_multi_index konvertiert jede Zeile von X in ein eindeutiges lineares Indexäquivalent. Es arbeitet mit einem 2D-Array von n-dimensionalen Indizes und der Form des n-dimensionalen Gitters, auf das diese Indizes abgebildet werden sollen.

In unserem Beispiel stellt beispielsweise jede Zeile von X ein Indextupel dar Für ein 2D-Gitter mit Abmessungen wird abgeblendet. np.ravel_multi_index ordnet jedes dieser Tupel einem eindeutigen linearen Index zu.

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