我已经设置了我的箱子的参数,我想知道如何在数据点落在特定箱子的范围内时将一个箱子添加到箱子中,本质上是计算每个箱子范围内有多少数据点,以便当我绘制它时,我可以将其用作“频率”。
我的垃圾箱范围设置为:
bins = [(i*bin_width, (i+1)*bin_width) for i in range(num_bins)]
我的数据看起来像这样:
2.55619101399
2.55619101399
2.55619101399
3.615
4.42745271008
2.55619101399
2.55619101399
2.55619101399
4.42745271008
3.615
2.55619101399
4.42745271008
5.71581687075
5.71581687075
3.615
2.55619101399
2.55619101399
2.55619101399
2.55619101399
2.55619101399
最佳答案
由于您使用的是 NumPy,您 (a) 不应该尝试创建列表并循环遍历它们而不是使用数组,并且 (b) 应该看看您想要做的事情是否已经内置(或在 SciPy 或 Pandas 或其他基于 NumPy 构建的库中可用),因为通常是这样。
和numpy.histogram
正是您想要的。
它需要一个总宽度而不是一个 bin 宽度,但除此之外,插入您已经拥有的值并取回您想要的值是微不足道的:
hist, edges = np.histogram(
data_points,
bins=num_bins,
range=(0, bin_width*num_bins),
density=False)
hist
数组将包含每个 bin 的计数(如我的其他答案中的 bin_counts
),这是您想要进行后处理并最终绘制图表的内容。
edges
,你可能需要也可能不需要。它与原始问题中的 bins
信息相同,但格式不同——而不是 [(0, .1), (.1, .2), (.2, . 3)]
它是 [0, .1, .2, .3]
。
关于python - 如何计算有多少数据点落在一个 bin 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918515/