Numpy Array Permute Spalten 3D Matrix mit Argsort

Ich muss Elemente der Spalten in der Matrix "A" (3D Matrix nach Achse 0) durch 2D Permutationsmatrix "pi" aus argsort, die neue Indizes für alle Spalten enthält, permutieren. Durch Applikation Permutationsmatrix "pi" auf der Matrix "A" (A [pi]) bekomme ich 4D Matrix mit neuer Form. Beispielsweise ist Form (A) (2,3,4) und Form (A [pi]) ist (2,3,3,4). Ich bin in der Lage, geforderte sortierte Matrix aus A [pi] durch Befehl zu extrahieren: swapaxes (diagonal (A [pi], axis1 = 2, axis2 = 1), 1,2) Aber IMHO scheint es zu kompliziert und langsam zu sein. Gibt es noch eine elegante Lösung?

Beispiel:

print(A) [[[ 73 701 2411 2414] [ 5515 8292 8414 16135] [ 100 1241 2146 2931]] [[ 1335 1747 3418 6312] [ 3788 5449 5753 9738] [ 565 3038 3800 5430]]] pi=argsort(Norm_order(A),0) print(pi) [[1, 0, 1], [0, 1, 0]] print(swapaxes(diagonal(A[pi],axis1=2,axis2=1),1,2)) [[[ 1335 1747 3418 6312] [ 5515 8292 8414 16135] [ 565 3038 3800 5430]] [[ 73 701 2411 2414] [ 3788 5449 5753 9738] [ 100 1241 2146 2931]]] 

One Solution collect form web for “Numpy Array Permute Spalten 3D Matrix mit Argsort”

Vielleicht eine Frage des Geschmacks, aber ich finde das folgende ein bisschen mehr lesbar:

 i, j = np.ogrid[:3, :4] A[pi[..., None], i, j] 

Ausgabe:

 array([[[ 1335, 1747, 3418, 6312], [ 5515, 8292, 8414, 16135], [ 565, 3038, 3800, 5430]], [[ 73, 701, 2411, 2414], [ 3788, 5449, 5753, 9738], [ 100, 1241, 2146, 2931]]]) 
  • Pandas read_csv () und python Iterator als Eingabe
  • Auswählen und Iterieren von spezifischen Sub-Arrays in multidimensionalen Arrays in Python
  • Numpys Genfromtxt gibt je nach dtype-Parameter unterschiedliche strukturierte Daten zurück
  • Schlechte numpy.cross () Leistung
  • Extrahieren Sie nicht leere Werte aus dem Regex-Array-Ausgang in Python
  • Es können keine Methoden für Zeitstempel mit Hilfe von Series-Einbauten angewendet werden
  • PyMC-Regression vieler Regressionen?
  • Maske nur, wenn aufeinanderfolgende Nans x überschreiten
  • Segmentierungsfehler in PyArray_SimpleNewFromData
  • Wie erstelle ich das Symbol für Matrix mit symPy und numPy
  • Einstellen von Abstand zwischen gruppierten Stabplots in Matplotlib
  • Python ist die beste Programmiersprache der Welt.