Ich möchte N 2x2 Arrays mit einem 2xN Array multiplizieren (Matrixmultiplikation).numpy dot oder einsum zum Multiplizieren von N 2x2 Arrays mit einem 2xn Array
n = np.array([1,2,3])
m = np.array([[n,0*n],[0*n,0*n+1]]).T
# shape: (3, 2, 2)
# [[[1 0]
# [0 1]]
# [[2 0]
# [0 1]]
# [[3 0]
# [0 1]]]
x = np.array([[1,2,3],[4,5,6]])
# shape: (2, 3)
# [[1 2 3]
# [4 5 6]]
So sollte das Ergebnis
sein[[1 4 9]
[4 5 6]]
Dieses mit einsum oder Punkt möglich sein sollte, aber ich nicht beide mit. Nach dem, was ich gelesen habe, wäre eine Lösung mit Punkt möglicherweise schneller.
bearbeiten: Um etwas mehr Kontext zu geben: Dies ist wirklich nur eine (2x2) Matrix Multiplikation auf einem 2xn Vektor. Aber es gibt n verschiedene Matrizen: Eine für jedes der n Vektorelemente.
Dies ist 'Art' richtig. Das richtige Ergebnis ist zumindest innerhalb davon verborgen. Aber du musst es immer noch rauskriegen. Und mehr Sorge: Das macht viel mehr Multiplikationen als nötig. edit: Die erwartete Ausgabe ist in der Frage – Basti
Können Sie Ihre erwartete Ausgabe schreiben? –
Es ist direkt unter "So sollte das Ergebnis sein" – Basti