很抱歉,我的问题的标题听起来含糊不清,因为我不知道该操作的确切名称。
给出一个张量A
(N×M×M)和一维数组b
(N),我想得到另一个张量B
(N×M× M),使得B
中的每个项目(M×M)是A
和b
之间的乘法。
一个可能但丑陋的解决方案是首先将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]]]
答案 0 :(得分:1)
您要寻找的是broadcasting;用两个词,在某些维度上将数组b
的值更改为1
,以更好地控制将要发生的事情; b
中的元素总数将保持不变,但是您可以选择数组在算术运算中的行为:
A*b.reshape((3,1,1))