Numpy: как рассчитать этот продукт между двумя массивами разных форм? - PullRequest
0 голосов
/ 02 ноября 2018

Извините, что название моего вопроса может звучать расплывчато, поскольку я не знаю точного названия такой операции.

Учитывая тензор A (N × M × M) и одномерный массив b (N), я хотел бы получить другой тензор B (N × M × M) такой, что каждый элемент (M × M) в B - это умножение между A и b.

Возможное, но уродливое решение состоит в том, чтобы сначала сгладить (изменить) A, т. Е. Преобразовать A в двумерный массив, затем применить операцию dot и, наконец, изменить ее обратно.

Существует ли какая-либо стандартная / простая операция в numpy для достижения этой цели?

Например,

A = np.ones(12).reshape(3, 2, 2)
b = np.array([2, 3, 4])

Ожидаемое B составляет

[[[2, 2],
  [2, 2]],
 [[3, 3],
  [3, 3]],
 [[4, 4],
  [4, 4]]]

1 Ответ

0 голосов
/ 02 ноября 2018

Вы ищете вещание ; В двух словах измените ваш массив b со значением 1 в некоторых измерениях, чтобы получить больше контроля над тем, что произойдет; общее количество элементов в b останется неизменным, но вы можете выбрать, как массив будет вести себя во время арифметической операции:

A*b.reshape((3,1,1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...