从 plt.hist 中获取所有 bin 的中间

Posted

技术标签:

【中文标题】从 plt.hist 中获取所有 bin 的中间【英文标题】:Get the middle of all bins from plt.hist 【发布时间】:2022-01-23 03:59:26 【问题描述】:

我已经用plt.hist() 制作了一个直方图,现在我有了一个包含这种形式的 bin 的数组:

bins = [0, 1, 2, 3, 4, 5] # n edges

有没有一种简单的方法可以从这些垃圾箱中取出中间位置?最终结果将是一个包含n - 1 中心的列表,例如:

centers = [0.5, 1.5, 2.5, 3.5, 4.5] # n - 1 centers

我事先不知道垃圾箱会是什么。

【问题讨论】:

【参考方案1】:

这似乎工作得很好:

x = np.array([0, 1, 2, 3, 4, 5, 6])
y = [(x[i] + x[i + 1]) / 2 for i in range(len(x[:-1]))]
print(y)
# [0.5, 1.5, 2.5, 3.5, 4.5, 5.5]

【讨论】:

【参考方案2】:
In [136]: bins = np.array([0, 1, 2, 3, 4, 5])

In [137]: centers = 0.5*(bins[:-1] + bins[1:])

In [138]: centers
Out[138]: array([0.5, 1.5, 2.5, 3.5, 4.5])

【讨论】:

【参考方案3】:

这些解决方案都展示了相同的想法,即找到数组中相邻点的平均值。这是另一种给猫剥皮的方法:

import numpy

def centers(bins):
    return np.diff(bins) / 2 + bins[:-1]

bins = np.arange(0, 7)
print(centers(bins))
# array([0.5, 1.5, 2.5, 3.5, 4.5, 5.5])

【讨论】:

以上是关于从 plt.hist 中获取所有 bin 的中间的主要内容,如果未能解决你的问题,请参考以下文章

plt.hist的使用

数据分析,使用plt.hist(runtime_data, num_bin_list)时出现ValueError: `bins` must increase monotonically, when a

hist

用python拟合直方图

Matplotlib(3直方图) - plt.hist()参数解释&应用实例

Matplotlib(3直方图) - plt.hist()参数解释&应用实例