首先,请记住,积分只是曲线下方的总面积。对于直方图,积分(在伪python中)为
sum([bin_width[i] * bin_height[i] fori in bin_indexes_to_integrate])。
作为参考,请参见以下在matplotlib中使用直方图的示例:http
:
//matplotlib.org/1.2.1/examples/pylab_examples/histogram_demo.html。
在这里,他们的输出分隔
plt.histogram成三个部分,
n,
bins,和
patches。我们可以使用这种分离来实现您要求的“积分”。
假设
bin1和
bin2是要积分的仓位的索引,然后像这样计算积分:
# create some dummy data to make a histogram ofimport numpy as npx = np.random.randn(1000)nbins = 10# use _ to assign the patches to a dummy variable since we don't need themn, bins, _ = plt.hist(x, nbins)# get the width of each binbin_width = bins[1] - bins[0]# sum over number in each bin and mult by bin width, which can be factored outintegral = bin_width * sum(n[bin1:bin2])
如果您已定义
bins为具有多个宽度的列表,则必须执行类似@cphlewis所说的 *** 作(此方法不带任何偏移):
integral = sum(np.diff(bins[bin1:bin2])*n[bin1:bin2])
还值得看看matplotlib.pyplot.hist的API文档。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)