如何对具有以下形状的张量进行元素乘法?这里的第二个数组始终假定为二维。
[x, y, ?, ?, ?, ...] * [x, y]
我想广播所有标有 ? 的维度,我不知道其中的先验数字。我考虑过的可能解决方案(但不知道该怎么做):
- 向第二个数组添加可变数量的轴
- 颠倒两个数组的轴顺序,然后再颠倒过来
任何指针都会很棒。
请您参考如下方法:
问题中提到的备选方案(使用 b 二维数组):
向第二个数组添加可变数量的轴
a * b.reshape(b.shape + (1,)*(a.ndim-b.ndim))颠倒两个数组的轴顺序,然后再颠倒过来
(a.T * b.T).T
einsum 的另一种选择:
numpy.einsum('ij...,ij->ij...', a, b)
