python - 如何计算有多少数据点落在一个 bin 中

标签 python sorting bin

我已经设置了我的箱子的参数,我想知道如何在数据点落在特定箱子的范围内时将一个箱子添加到箱子中,本质上是计算每个箱子范围内有多少数据点,以便当我绘制它时,我可以将其用作“频率”。

我的垃圾箱范围设置为:

 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/

相关文章:

python - Flask after_request 'NoneType' 对象不可调用

list - Group by、sum 然后对事务对象列表进行排序 java

php - MySQL 排序未按预期工作

c# - 为什么我的.exe同时存放在\bin\Debug和\obj\Debug中?

python - PyCurl 安装不成功

python - 在 python 中随机排列一个元组

java - 用于按频率排序的比较器,无需创建比较器实现类

linux - 运行位于/bin中的自定义程序

Java 库哪些不是二进制文件?

python - 将 pyodbc.Binary 数据 (BLOB) 插入 SQL Server 图像列