Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man ein 2D-NumPy-Array mithilfe von zwei Indexlisten effizient indizieren?

Wie kann man ein 2D-NumPy-Array mithilfe von zwei Indexlisten effizient indizieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 04:54:02322Durchsuche

How to Efficiently Index a 2D NumPy Array Using Two Lists of Indices?

Indizierung eines 2D-NumPy-Arrays mithilfe von zwei Indexlisten

Das Ziel besteht darin, die Indizierung für ein 2D-NumPy-Array mithilfe von zwei bereitgestellten Indexlisten durchzuführen, eine für Zeilen und eine eine für Spalten. Das gewünschte Ergebnis besteht darin, effizient eine Teilmenge des Arrays basierend auf den angegebenen Indizes zu erhalten.

Verwendung von np.ix_

Um dies zu erreichen, können wir die nutzen np.ix_ Funktion von NumPy. np.ix_ erstellt Tupel von Indexarrays, die für die Übertragung verwendet werden können. So funktioniert es:

Mit indizierten Arrays

Auswahl:

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

Dadurch wird ein Tupel von erstellt Indizieren von Arrays basierend auf row_indices und col_indices. Durch die Übertragung dieser Arrays können wir in x indizieren und die gewünschte Teilmenge extrahieren.

Zuweisung:

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

Dadurch wird der angegebene Wert den indizierten Positionen in x zugewiesen.

Mit Masken

Auswahl:

<code class="python">row_mask = np.array([True, False, False, True, False], dtype=bool)
col_mask = np.array([False, True, True, False, False], dtype=bool)

x_indexed = x[np.ix_(row_mask, col_mask)]</code>

Hier verwenden wir boolesche Masken (row_mask und col_mask) um zu definieren, welche Zeilen und Spalten ausgewählt werden sollen.

Zuweisung:

<code class="python">x[np.ix_(row_mask, col_mask)] = value</code>

Dies weist den maskierten Positionen in x einen Wert zu.

< h3>Sample Run

Betrachten Sie die folgenden Array- und Indexlisten:

<code class="python">x = np.random.random_integers(0, 5, (20, 8))

row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]</code>

Mit np.ix_ können wir in x indizieren:

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

print(x_indexed)

# Output:
# [[76 56]
#  [70 47]
#  [46 95]
#  [76 56]
#  [92 46]]</code>

Dadurch erhalten wir die gewünschte Teilmenge des Arrays mit ausgewählten Zeilen und Spalten basierend auf den bereitgestellten Indizes.

Das obige ist der detaillierte Inhalt vonWie kann man ein 2D-NumPy-Array mithilfe von zwei Indexlisten effizient indizieren?. 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