У меня есть массив vector_a формы (3,1). Если я умножу его на vector_b формы (1,3), я получу результат shape (3,3).
Теперь vector_b на самом деле представляет собой (3, N) массив векторов-столбцов. Я хочу умножить каждый из этих векторов-столбцов на vector_a, чтобы получить N матриц 3x3, результат shape (N, 3,3)
Я сделал следующее:
r = np.dot(vector_a.reshape(1,3,1), vector_b.T.reshape(N, 1, 3))
и я ожидал, что r будет иметь форму (N, 3,3), но я получил форму (1,3,64,3) ??? Не знаю, почему у меня такая форма. И vector_a, и vector_b являются смежными. Я попытался преобразовать vector_b в F смежный, прежде чем делать vector_b.T.reshape(N, 1, 3)
, но я все еще получаю ту же форму r (1,3,64,3).
Кто-нибудь знает, как написать правильное выражение?
dot
говорит о массивах, размер которых превышает 2d? - person hpaulj   schedule 07.12.2015dot
случай. Выражениеeinsum
ничего не суммирует. Это можно сделать с помощью простого умножения (и широковещательной передачи)b.T[:,:,None] * a.T[None,:,:]
. - person hpaulj   schedule 07.12.2015