从 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(runtime_data, num_bin_list)时出现ValueError: `bins` must increase monotonically, when a