Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich ein 2D-NumPy-Array mithilfe von zwei Indexlisten indizieren, und welche Lösungen gibt es für Übertragungsprobleme?

Wie kann ich ein 2D-NumPy-Array mithilfe von zwei Indexlisten indizieren, und welche Lösungen gibt es für Übertragungsprobleme?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 15:06:02746Durchsuche

How can I index a 2D NumPy array using two lists of indices, and what are the solutions to broadcasting issues?

Indizieren eines 2D-Numpy-Arrays mit zwei Indexlisten

In NumPy gibt es verschiedene Möglichkeiten, ein 2D-Array mit zwei Indizes zu indizieren Listen mit Indizes, einer für Zeilen und einer für Spalten. Lassen Sie uns diese Methoden untersuchen und uns mit dem Thema Broadcasting befassen.

Broadcasting mit Indexierungsarrays verwenden

Um ein 2D-Array x mit zwei Indexierungsarrays, row_indices und col_indices, zu indizieren, können Sie einfach die verwenden Folgende Syntax:

<code class="python">x_indexed = x[row_indices, col_indices]</code>

Es kann jedoch zu einem Übertragungsfehler kommen, wenn die Formen von row_indices und col_indices nicht für die Übertragung kompatibel sind. Um dies zu umgehen, können Sie np.ix für die Übertragung verwenden.

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>

Boolesche Masken verwenden

Sie können auch boolesche Masken für die Zeilen- und Spaltenauswahl verwenden. Erstellen Sie zwei boolesche Masken, row_mask und col_mask, wobei True die auszuwählenden Elemente darstellt.

Dann können Sie die folgende Syntax verwenden:

<code class="python">x_indexed = x[row_mask, col_mask]</code>

Beispiel:

Gegeben x, row_indices und col_indices:

<code class="python">x = np.random.randint(0, 10, size=(5, 8))
row_indices = [2, 1, 4]
col_indices = [3, 7]

# Using broadcasting with indexing arrays
x_indexed_broadcasting = x[np.ix_(row_indices, col_indices)]

# Using boolean masks
row_mask = np.array([False] * 5, dtype=bool)
row_mask[[2, 1, 4]] = True
col_mask = np.array([False] * 8, dtype=bool)
col_mask[[3, 7]] = True
x_indexed_masks = x[row_mask, col_mask]

print(x_indexed_broadcasting)
print(x_indexed_masks)</code>

Ausgabe:

Beide Ansätze führen zum gleichen Ergebnis:

[[4 7]
 [7 7]
 [2 1]]

Das obige ist der detaillierte Inhalt vonWie kann ich ein 2D-NumPy-Array mithilfe von zwei Indexlisten indizieren, und welche Lösungen gibt es für Übertragungsprobleme?. 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