Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich Zeilenindizes mit mehreren Werten in einem 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!