Mam tablicę numpy A, która ma kształt (10,).mnożenie macierzy szeregowej z tablicami o dowolnych wymiarach
Mam również, od tego momentu, tablicę numpy B o kształcie (10,3,5). Chcę wykonać pomnożenie między tymi dwoma, aby uzyskać C takie, że C [0,:,:] = A [0] * B [0,:,:], C [1] = A [1] * B [1 ,:,:], itp.
Nie chcę tego robić z pętlami, jednym z powodów jest estetyka rzeczy, a drugą jest to, że ten kod musi być bardzo ogólny. Chcę, aby użytkownik mógł wprowadzić dowolnie dowolny B o dowolnym kształcie, o ile wymiar wiodący wynosi 10. Na przykład, chcę, aby użytkownik mógł również wstawić kształt B (10,4).
Więc: Jak zaimplementować to mnożenie za pomocą numpy? Dzięki.
ADDENDUM: Zostałem poproszony na przykład. Zmniejszy się. Powiedzmy, że A to tablica numpy [1,2,3], a B to tablica numpy [[1,2], [4,5], [7,8]]. Chcę, aby pomnożenie tych dwóch wyników doprowadziło do [[1,2], [8,10], [21,24]]. ...
>>> a
array([1, 2, 3])
>>> b
array([[1, 2],
[4, 5],
[7, 8]])
>>> #result
>>> c
array([[ 1, 2],
[ 8, 10],
[21, 24]])
>>>
Proszę podać, * mały *, przykładowe tablice i oczekiwany wynik. – wwii
Jeśli "B" to '(3,5,10)', '' * B' działa.'numpy' automatycznie dodaje wymiary na początku w miarę potrzeb (MATLAB dodaje je na końcu). – hpaulj
Jak wspomniano powyżej, rozgłaszanie par z najbardziej prawych wymiarów tablic. Oznacza to, że '(A * B.T) .T' będzie odpowiadać długości 10 s dla mnożenia i będzie ogólnym rozwiązaniem, ale myślę, że podejście' einsum' sugerowane przez DSM jest prawdopodobnie lepsze. –