很抱歉,我的问题标题听起来可能含糊不清,因为我不知道这类操作的确切名称。
给定张量 A (n_m_m)和一维数组 b (n)我想换一个张量 B (nmm)使得 乙 是二者之间的乘法 一 和 乙 .
A
b
B
乙
一
一个可能但丑陋的解决方案是展平(重塑) 一 首先,即转换 一 在二维数组中,然后应用 dot 手术,最后整形背部。
dot
是否有标准/简单的操作 numpy 要做到这一点?
numpy
例如,
A = np.ones(12).reshape(3, 2, 2) b = np.array([2, 3, 4])
预期的 乙 是
[[[2, 2], [2, 2]], [[3, 3], [3, 3]], [[4, 4], [4, 4]]]
你要找的是 broadcasting ;换言之,重塑数组 b 有价值的 1 在某些维度中,为了更好地控制将要发生的事情;中的元素总数 乙 将保持不变,但您可以选择数组在算术运算期间的行为方式:
1
A*b.reshape((3,1,1))