【问题标题】:computing weighted average over numpy.ndarray在 numpy.ndarray 上计算加权平均值
【发布时间】:2021-10-20 14:44:44
【问题描述】:

有两个 numpy.ndarray AB;并且两者都有形状(3,20,5)C 是一个 pandas.core.series.Series,长度为 20 我想根据公式计算基于A, BC的加权平均数组D

D[:,x,:] = A[:,x,:]*C[x]+B[:,x,:]*(1-C[x])

根据 Numpy 的最佳实践,在不迭代相关的 3-dimension array 的情况下,实现这一点的正确方法是什么?

【问题讨论】:

    标签: python-3.x numpy scipy numpy-ndarray array-broadcasting


    【解决方案1】:

    你可以试试这个:

    c = C.to_numpy().reshape(-1, 1)
    D = A*c + B*(1-c)
    

    【讨论】:

    • 谢谢,我有一个关于答案的问题,所以c会自动广播到A和B的第二维。如果A和B有形状(3,20,20),如何我们应该解决这个问题吗?
    • 如果你还想在第二个维度上广播c,那么同样的代码可以工作(c的最后一个维度是1,所以它将在@987654325的最后一个维度上广播@ 和 B)。 Here 是 numpy 广播规则的一个很好的总结。
    猜你喜欢
    • 2021-11-24
    • 2016-12-14
    • 2021-11-21
    • 2017-04-22
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多