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

Patricia Arquette
Freigeben: 2024-10-26 15:06:02
Original
761 Leute haben es durchsucht

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

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

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

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

Ausgabe:

Beide Ansätze führen zum gleichen Ergebnis:

[[4 7]
 [7 7]
 [2 1]]
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!