我有一个 NumPy ndarray
,它的形状为 (32, 1024) 并保存 32 个信号测量值,我想将它们组合成一个 1024 个元素长的阵列,每个 32 个元素的权重不同。我正在使用numpy.average
,但我的权重很复杂,而且average
根据抛出我的结果的总和对权重进行归一化。
查看平均值的代码,我意识到我可以通过将权重乘以信号数组然后在第一个轴上求和来完成同样的事情。但是,当我尝试将我的 (32,) 权重数组乘以 (32, 1024) 信号数组时,我得到一个维度不匹配,因为 (32,) 无法广播到 (32, 1024)。如果我将权重数组重塑为 (32, 1) 则一切都按预期工作,但这会导致相当难看的代码:
avg = (weights.reshape((32, 1)) * data).sum(axis=0)
谁能解释为什么 NumPy 不允许我的 (32,) 数组广播到 (32, 1024) 和/或建议一种替代的、更简洁的方法来执行加权平均?