Python 计算概率密度平均值

Python 计算概率密度平均值,python,numpy,scipy,probability-density,Python,Numpy,Scipy,Probability Density,假设我有一个概率密度函数的热图,作为numpy-ndarray(m,n)。是否有一个函数可以自动计算平均值,并将此矩阵视为概率密度?我似乎找不到一个能自动做到这一点的函数 当然,一个简单的解决方案是创建一个加权平均值,其权重等于数组的索引,但似乎应该有一个内置函数来实现这一点 分类: 假设我的数组是热图=[[0,0,0,1],[0,0,1,0],[0,0,1.5,0],[0,0,0,0]。 不,若我们假设这不是标准化概率,你们可以计算概率密度的平均值和其他属性 例如,x方向的平均值为 x

假设我有一个概率密度函数的热图,作为
numpy-ndarray(m,n)
。是否有一个函数可以自动计算平均值,并将此矩阵视为概率密度?我似乎找不到一个能自动做到这一点的函数

当然,一个简单的解决方案是创建一个加权平均值,其权重等于数组的索引,但似乎应该有一个内置函数来实现这一点

分类: 假设我的数组是
热图=[[0,0,0,1],[0,0,1,0],[0,0,1.5,0],[0,0,0,0]
。 不,若我们假设这不是标准化概率,你们可以计算概率密度的平均值和其他属性

例如,x方向的平均值为

    xx = np.arange(0,heatmap.shape[1],1)
    weights = np.tile(xx,(heatmap.shape[0],1))

    mean_x = np.average(weights, weights = heatmap_avg_left)

我只是在寻找numpy或scipy中的一个函数,它可以自动完成这项工作和其他概率属性

你可以使用。如果将数组索引到包含单个体量的贴图中,则可以直接变换:

# assuming the array is called pdf_arr
axis = 0  # 0 for x axis (columns), 1 for y axis (rows)
marginal_pdf = pdf_arr.sum(axis=axis)
# since it's just a sample, normalize pdf
marginal_pdf /= marginal_pdf.sum()
axis_mean = (marginal_pdf * np.arange(pdf_arr.shape[1-axis])).sum()
# repeat the same for axis = 1
from scipy.ndimage import center_of_mass

indices = ... # shape (m, n), values in [0, k)
mass_lookup = ... # shape (k)

result = center_of_mass(mass_lookup[indices])

在这种情况下,
mass\u lookup
类似于热图。如果数组包含权重,请直接使用它。

您能否澄清您的问题,以显示数组的最小示例以及您期望的含义?您是在寻找每个方向上数据的第50个百分位,还是质心?刚刚添加了一个澄清。是的,有点像重心将数组视为概率密度。你的代码对不在你头脑中的人来说没有多大意义。请发布一个完整的示例。请修复您的代码以使用已定义的变量…谢谢,这将起作用。我只是希望有一个内置的函数来处理概率密度。