numpy:如何在两个具有不同形状的数组之间计算该乘积?

时间:2018-11-02 07:52:04

标签: python arrays numpy numpy-broadcasting

很抱歉,我的问题的标题听起来含糊不清,因为我不知道该操作的确切名称。

给出一个张量A(N×M×M)和一维数组b(N),我想得到另一个张量B(N×M× M),使得B中的每个项目(M×M)是Ab之间的乘法。

一个可能但丑陋的解决方案是首先将A展平(重塑),即将A转换为2D数组,然后应用dot操作,最后重新塑形。 / p>

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 :(得分:1)

您要寻找的是broadcasting;用两个词,在某些维度上将数组b的值更改为1,以更好地控制将要发生的事情; b中的元素总数将保持不变,但是您可以选择数组在算术运算中的行为:

A*b.reshape((3,1,1))