【发布时间】:2014-07-21 06:07:49
【问题描述】:
我的目的是根据np.histogram函数的概率密度和bin信息来计算原始数据数组。
例如:
import random
a = random.sample(xrange(100), 50)
n, bin = np.histogram(a,bins=100,range=(-10,10), normed=True)
我想从 n 和 bin 中得到一个。我使用了 np.digitize,但它似乎不是正确的解决方案。
实际上,我最初的目的是根据该直方图计算原始数据的偏度和峰度。所以,我试图将 n 和 bin 转换为原始数据。如果能直接从直方图中得到偏度和峰度就完美了。
感谢 user3823992,我尝试使用 scipy.stats.rv_discrete 函数从 bin 和概率密度函数中获取偏度和峰度。 我编辑的代码是:
a = random.sample(xrange(100), 50)
n, bin = np.histogram(a,bins=100,range=(-10,10), normed=True)
b2=bin[:-1]
print np.mean(a), np.var(a), sp.skew(a),sp.kurtosis(a)
dist = sp.rv_discrete(values=(b2,n))
print dist.stats(moments='mvsk')
但是,np.mean(a)、np.var(a)、sp.skew(a)、sp.kurtosis(a) 和 dist.stats(moments='mvsk') 的结果相差太大.根据 scipy.stats.rv_discrete 的文档,“values”中的两个元组之一应该是具有整数的点(在本例中为 b2),另一个(在本例中为 n)的总和应为 1。 问题是我的 b2 中的数字不是整数,并且“n”的总和也不是 1。 我将 bin 宽度乘以 n 并再次尝试。但是还是不行。
任何想法或帮助将不胜感激。 最好的问候,
胡尼尔
【问题讨论】:
-
与其提出新问题,不如编辑和改进这个问题。考虑阅读the Help Center 中提供的材料。
标签: python statistics scipy histogram reverse