python-3.x - 用python生成大量随机数
问题描述
我想生成随机数,均匀地介于 -1 和 1 之间。我知道使用 NumPy 并生成一个数字数组比在 for 循环中一个一个地生成要好得多。另一方面,我希望这些数字只对它们进行一次操作,因此没有理由将它们存储在数组中。我的问题是,最好的解决方案是什么,一方面使用 for 循环不省时,但我不存储不必要的数字,我一个一个生成它们然后我扔掉它们。另一方面,数组的内存效率不高,因为如果我想生成 10^10 个数字,我需要创建一个 10^10 大小的数组,结果很糟糕。我认为最好的选择是一个一个地生成小数组(10^3 或 10^4 元素),但我想知道是否有'
解决方案
正如@Carcigenicate 在评论中所说,您可以制作一个生成器,并将其与使用yield from 表达式生成整个数组的加速相结合。
这看起来像这样:
def random_numbers():
while True:
yield from np.random.random(1000) * 2 - 1
您可以将一次生成的值的数量调整为您需要的任何值,越大越快但使用更多内存
推荐阅读
- java - Java 使用 MongoCollection.countDocuments() 执行缓慢甚至超时,但不推荐使用 count() 方法是可以的
- kubernetes - Helm 和 Kustomize 有什么区别?
- excel - 提取两个特定字符或数字之间的单词
- ruby - 如果消息为空,则 Logstash 删除整行
- angular - 订阅者内部的订阅者在离子项目中无法正常工作
- java - 由于 GSON 库中的 CLOB 数据类型导致的异常
- javascript - 我有一个问题 javascript 切换索引
- react-native - 在 IOS 13 中从服务器获取消息时未设置徽章
- tensorflow-model-garden - 如何使用模型/官方/视觉/检测训练自定义模型进行对象检测?
- python - ML Pipeline OneHotEncoder 不适合