Python:减少Floats和Ints大小的包?

时间:2018-01-31 12:27:10

标签: python numpy pyinstaller

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

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

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

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

你知道这样的事吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

好吧,如果那些真的是你需要的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的大小吗?

相关问题