【发布时间】:2013-10-22 16:17:04
【问题描述】:
scipy.random.rand() 和其他函数在同一个包中 都产生 float64 数组作为输出 (至少对于 Mac OS 上的 python 2.7.3 64 位,scipy 版本 0.12.0)。
我想要的是一个相当大的(N GB)随机初始化的 float32 矩阵。 有没有一种简单的方法可以直接生成一个,而不是分配双倍空间 对于 float64 然后转换为 32 位?
【问题讨论】:
-
Python 和 SciPy 版本无关。这些函数来自 NumPy,仅由 SciPy 重新导出。
-
仅供参考:因为,呃,“历史原因”,scipy 将大部分 numpy 导入到
scipy命名空间中。scipy.random实际上是numpy.random。 -
但是不,似乎没有办法直接获得
float32,因为这些函数中没有dtype参数。真可惜。 -
你可以预先分配大的float32数组,然后分批填充。这仍然会相当快,可以避免同时在内存中同时拥有完整的 float32 和 float64 版本。
-
谢谢大家。我只是想确认我没有遗漏一些明显的东西。批量填充确实是一种解决方法。