Skip to main content
 首页 » 编程设计

python之未知维度张量的逐元素乘法

2025年05月04日14开发

如何对具有以下形状的张量进行元素乘法?这里的第二个数组始终假定为二维。

[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)