3

我正在使用 numpy 和 Python 2.7 来计算超大质数筛的大型(1 亿+元素)布尔数组,并将它们写入二进制文件以供稍后读取。NumPy bools 是 8 位的,所以我写的文件大小比需要的大得多。由于我正在编写大量这些文件,因此我希望它们尽可能小,而不必浪费大量时间/内存将它们转换为位数组并返回。

我原本打算改用 bitarray 模块来减小文件大小,但是使用相同的算法,筛子计算时间增加了大约 400%,这有点不可接受。是否有一种快速的方法可以在较小的文件中写入和读取 ndarray,或者这是我必须处理的权衡?

4

1 回答 1

3

numpy.packbits把它变成一个uint8数组来写,然后numpy.unpackbits读回来。numpy.packbits将要打包的轴与零一起填充以达到 8 的倍数,因此请确保跟踪解包数组时需要切断末端的零。

于 2013-08-05T19:48:55.790 回答