2016-10-17 2 views
1

ich will etwas tun, wieKannst du generisch numpy schneiden?

x[i, :, :] = (rhs[i, :, :]-diag[i] * x[i+1, :, :])/diag[i] 

wo x und rhs sind 3D numpy Arrays der Größe (T, L, S). diag ist ein 1D-Array der Größe T.

Dies wird ordnungsgemäß übertragen.

Aber jetzt möchte ich eine ähnliche Funktion schreiben, um auf 2D-Arrays oder eine andere Anzahl von Dimensionen zu arbeiten. Wie kann ich dies generisch schreiben, so dass es auf jedem Array funktioniert, das die erste Dimension der Größe T hat. Ich möchte Code mit nur einer anderen Anzahl von Doppelpunkten nicht duplizieren, da es viele dieser Arten von Zeilen in der Funktion gibt .

+0

Wollen Sie auch über 'T' vektorisieren? Das heißt, geschieht dies in einer 'for i in range (T)' Schleife? – Eric

+0

Meinst du, die Anzahl der Achsen ist nicht garantiert, 3 zu sein? Kann es 1, 2, 3, ..., N sein? – Jeon

Antwort

2
x[i] = (rhs[i] - diag[i] * x[i+1])/diag[i] 

Diese Doppelpunkte sind völlig unnötig.

+0

Ehrfürchtig. Vielen Dank. Ich wusste nicht, dass es so einfach war. – Dave31415

+1

Wenn Sie daran interessiert sind, etwas Ähnliches zu tun, aber entlang der letzten Dimension, können Sie Ellipsen wie 'x [..., i + 1]' verwenden. – IanH

Verwandte Themen