gpt4 book ai didi

python - 如何有效地生成具有大量 bin 和数据的直方图

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:20 27 4
gpt4 key购买 nike

我被要求研究中心极限理论如何应用于均匀分布的随机数。对于问题的第一部分,我被要求创建 1,000,000 个箱子,每个箱子中有一个数字,然后每个箱子中有 2、3 和 10 个数字。

我已经使用 NumPy 包来创建直方图,但尝试创建 1,000,000 个箱子,每个箱子中有一个数字需要花费大量时间。我能够创建 1,000 和 10,000 个 bin 和随机数的直方图,所以我认为 numpy.hist 不是处理大量 bin 的有效方法。

是否有其他方法可以创建包含大量数据和 bin 的直方图?

编辑:随机数在区间 [0,1] 内。

最佳答案

您在问题中遗漏了可能至关重要的细节。

您的 bin 大小是多少(即您在 [0,1]、[0,20] 或 [0,1M] 之间是否有 1M 个 bin)..?您的性能要求是什么,对于您的目的来说什么是“慢”?您是否达到内存限制、CPU 使用限制或其他原因?

一个简单的解决方案是使用 random.random() 在 [0,1] 之间生成一个随机数,然后使用乘法/加法在您需要的任何间隔内进行采样。

以下代码对 1M 个 bin 进行采样,每个 bin 的大小为 1,每个 bin 包含 2 个数字。

import random

hist_data = []
in_each_bin = 2

for i in range(1000000):
for j in range(in_each_bin):
hist_data.append(i+random.random())

print(len(hist_data))
print(hist_data[0:20])

它在我的中型机器上运行不到 3 秒。

$ time python3 pytest.py
2000000
[0.9271533001749838, 0.6759096885597532, 1.0950935186564377, 1.4195955772696995, 2.620307487968376, 2.535700184898931, 3.606823695579621, 3.5471311130365346, 4.01255833303964, 4.013715023517034, 5.42988725471679, 5.257435390135351, 6.681956593279519, 6.686189487682324, 7.916591795688389, 7.598478524938438, 8.309152266029844, 8.997231092516385, 9.801082205541228, 9.198095437802664]

real 0m3.418s
user 0m2.547s
sys 0m0.500s

这符合您的需要和要求吗?

关于python - 如何有效地生成具有大量 bin 和数据的直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com