计算概率密度均值 python
Calculate probability density mean python
假设我有一个概率密度函数的热图 numpy ndarray(m,n)
。是否有自动计算均值的函数将此矩阵视为概率密度?我似乎找不到可以自动执行此操作的功能。
当然,一个简单的解决方案是创建一个权重等于数组索引的加权平均值,但似乎应该有一个内置函数可以做到这一点。
分类:
假设我的数组是 heatmap = [[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
您可以使用 scipy.ndimage.center_of_mass
找到阵列的质心。如果你的数组被索引到包含单个质量的映射中,你可以直接转换:
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_lookup
就像一个热图。如果数组包含权重,则直接使用它。
假设我有一个概率密度函数的热图 numpy ndarray(m,n)
。是否有自动计算均值的函数将此矩阵视为概率密度?我似乎找不到可以自动执行此操作的功能。
当然,一个简单的解决方案是创建一个权重等于数组索引的加权平均值,但似乎应该有一个内置函数可以做到这一点。
分类:
假设我的数组是 heatmap = [[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
您可以使用 scipy.ndimage.center_of_mass
找到阵列的质心。如果你的数组被索引到包含单个质量的映射中,你可以直接转换:
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_lookup
就像一个热图。如果数组包含权重,则直接使用它。