extrahieren Elemente aus einem 2D -Array mit Indizes aus einem anderen Array
in Numpy, manchmal wird es notwendig, bestimmte Elemente aus einem mehrdimensionalen Array zu extrahieren, das auf Indizes basiert, die in einem anderen Array gelagert wurden. Dieses Szenario entsteht häufig bei der Arbeit mit Datenstrukturen wie spärlichen Matrizen oder indexierten Auswahl. B = np.array ([[1], [0], [1]]) # index array
Das Ziel ist es, ein Element aus jeder Zeile von A zu extrahieren, wobei das spezifische Element im Index in der entsprechenden Zeile von B. angegeben wird. [5]])
Lösungen:
A = np.array([[0, 1], [2, 3], [4, 5]]) B = np.array([[1], [0], [1]]) # Index array1. Rein ganzzahlige Array -Indexierung:
C = np.array([[1], [2], [5]])
Diese Methode beinhaltet die Verwendung von Numpys Ganzzahlarray -Indexierungsfunktionen. Es erzeugt eine Reihe von Indizes, die den Zeilen von A entsprechen, und kombiniert es mit dem abgeflachten B -Array, um die entsprechenden Elemente auszuwählen.
2. Transponieren und np.choose:np.choose (b.ravel (), a.t)
A[np.arange(A.shape[0]), B.ravel()]
*a = a.t C = np.array ([*ZIP (*a)] [i] für i in b.Ravel ()
Diese Methode verwendet iterable Auspacken, um eine Liste von Zeilen zu konvertieren, und dann über die Reihen von A basieren, um die gewünschten Elemente zu extrahieren. LISTE VERFAHRUNGEN UND RUNDING:
np.choose(B.ravel(), A.T)
LISTE VERFAHRENDERUNGEN VERWENDET KÖNNEN, um eine Neuanordnung zu erstellen. Fancy Indexierung (numpy> = 1.18):
a [np.stack ([Bereich (a.Shape [0]), B.Ravel ()], Axis = 1)]
Fancy Indexierung erlaubt es, effizientere und kompakte Indexierungsoperationen zu ermöglichen. In diesem Fall werden ein 2D -Array mit den Zeilenindizes und B -Indizes erstellt, mit denen die gewünschten Elemente aus a.A = np.array([[0, 1], [2, 3], [4, 5]]) B = np.array([[1], [0], [1]]) # Index arrayDie am besten geeignete Lösung hängt von den spezifischen Anforderungen und Einschränkungen der Aufgabe ab, wie z. B. Effizienz, Lesbarkeit und Kompatibilität mit älteren Transsionen von NUMPY.
]
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3