Умножение многомерной матрицы Питона - PullRequest
0 голосов
/ 23 мая 2019

Матрицы чисел с плавающей точкой A и B имеют размеры (1000,120) и (1000,120,3).

Я хочу умножить их так, чтобы результирующая матрица M имела размеры (1000, 120, 3) и логикабудь то M[0][0] = A[0][0] * B[0][0]A[0][0] скалярным и B[0][0] массивом с 3 значениями.

Я могу сделать это с помощью циклов, но ищу питонский способ сделать это. Я попытался A * B, np.dot(A, B) и A @ B, но ни один из них не дает ожидаемых результатов (поскольку я, вероятно, упускаю базовую концепцию).

ОБНОВЛЕНИЕ:

A = np.random.uniform(size=(1000,120))
B = np.random.uniform(size=(1000,120,3))

A*B # ValueError: operands could not be broadcast together with shapes (1000,120) (1000,120,3)
np.shape(np.dot(A,B)) # (1000,1000,3)
np.shape(A@B) # (1000,1000,3)
np.tensordot(A,B,axes=1) # ValueError: shape-mismatch for sum
A[..., None]*B # works, THANKS!

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

@ PaulPanzer придумал правильный ответ на комментарии, который, как оказалось,

A[..., None]*B
0 голосов
/ 23 мая 2019

можно попробовать тензорот

np.tensordot(A,B,axes=1)

Если вы приведете небольшой числовой пример, вам будет легче понять

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...