假设我有一个由
给出的网格import numpy as np
grid = np.linspace(0,20,1000)
我想获得一个1000 x 1的矢量p,这样如果要绘制点数 (grid [i],p [i])图形看起来像对数正态分布的密度。
答案 0 :(得分:0)
使用scipy的stats获取pdf的概率分布!
Numpy,在大多数(所有?)案例中仅支持抽样方法,而不支持pdf计算。所需要的肯定取决于用例。
通常,pdf在实际的仅采样实现中不起作用,例如在这种情况下,采样减少到normal-distribution sampling(通常减少到统一采样与其他函数结合),然后是指数函数( code):
double rk_lognormal(rk_state *state, double mean, double sigma)
{
return exp(rk_normal(state, mean, sigma));
}
请务必阅读以上文档以了解如何使用这些文档!
示例代码:
import numpy as np
import scipy.stats as spt
import matplotlib.pyplot as plt
rv = spt.lognorm(0.954) # "frozen" RV (shape-param fixed)
x_points = np.linspace(1,20,1000, dtype=int) # 0 excluded
plt.scatter(x_points, rv.pdf(x_points))
plt.show()
输出: