Python:减少浮点数和整数大小的包?

Python: Package to reduce size of Floats and Ints?

我有一个大约 550MB 的 pickle 文件,其中包含一个巨大的字典和一些子字典、浮点数和整数列表;加载后所需的 RAM 约为 2.5GB。

浮点数列表所需的精度最多为 10 位数字,因此 Numpy float16 就足够了。当我将列表从本机 Python 64 位浮点数转换为 Float16 时,我节省了大量的 RAM - 但不幸的是我想将我的工具作为 exe 分发,因此使用 PyInstaller 将其捆绑 - >但是将 numpy 与它捆绑在一起使得.exe 巨大,大约有 130MB 大小。我不需要 Numpy 的任何其他东西,只想使用 numpy 数据类型存储所有 Ints 和 float 列表,因此使用 np.asarray().

关于如何绕过它的任何想法?

我在想是否有一个 small 模块实现了我可以使用的简化数据类型,例如 numpy 的 Float16,我希望捆绑这个模块只需要少量内存。

你知道这样的事情吗?

提前致谢!

好吧,如果你真的只需要这些来自 numpy 的两个东西,那么:

from numpy import float16 as NPfloat16
from numpy import asarray as NPasarray

test = [0.12345, 0.98765]
np_test = NPasarray(test, dtype=NPfloat16)

np_test

输出=

array([ 0.12347412, 0.98779297], dtype=float16)

这会减小您的 exe 文件的大小吗?