Numpy是否存在反向广播?能否用单函数实现对应降维求和?
用Numpy的sum函数一步完成反向求和操作
你可以直接用np.sum()函数,一次性指定所有需要求和的轴,并通过keepdims=True保留单维度,就能一步得到和x1形状一致的结果。
具体代码如下:
import numpy as np x0 = np.random.randn(7, 8, 9, 10, 11) x1 = np.random.randn(9, 1, 11) y = x0 + x1 # 一步完成求和 result = np.sum(y, axis=(0, 1, 3), keepdims=True) print(result.shape == x1.shape) # True
原理说明
- 广播时x1被扩展到y的形状,新增的维度是轴0(7)、轴1(8)、轴3(10),对这三个轴求和就能还原到x1的维度。
axis=(0,1,3)一次性指定所有需要求和的轴,keepdims=True会保留求和后原本的单维度(比如轴3求和后保持为1,而非被挤压掉),最终形状就和x1完全一致。
内容的提问来源于stack exchange,提问作者Sam-gege
相关产品推荐
相关产品推荐

