应该使用哪种类型来保存数据?

时间:2017-05-14 07:26:20

标签: python arrays python-2.7

我有一个3D数组。数组的范围是-100.0到2048.0,它们是浮点数。我想决定在PYTHON中应该使用哪种类型的数据float / float16 / float32 ...,例如它的大小尽可能小。目前,我使用float32来保存数组(1000个3D阵列),结果为2GB。我可以通过使用其他类型(如float / float16?

)来减小其大小

1 个答案:

答案 0 :(得分:2)

有关浮动类型的一些信息可以使用numpy的finfo函数找到。如下所示,float16的最大值为65504.0,因此值范围(-100.0到2048.0)将适合。问题可能是epsilon(下面的epsepsneg)太大,因此两个不同的值将被视为相同。使用float32时,epsilon值会小得多,因此您可以用更高的精度表示值。

> import numpy as np
> print(np.finfo(np.float16))
Machine parameters for float16
---------------------------------------------------------------
precision =   3   resolution = 1.00040e-03
machep =    -10   eps =        9.76562e-04
negep =     -11   epsneg =     4.88281e-04
minexp =    -14   tiny =       6.10352e-05
maxexp =     16   max =        6.55040e+04
nexp =        5   min =        -max
---------------------------------------------------------------

> print(np.finfo(np.float32))
Machine parameters for float32
---------------------------------------------------------------
precision =   6   resolution = 1.0000000e-06
machep =    -23   eps =        1.1920929e-07
negep =     -24   epsneg =     5.9604645e-08
minexp =   -126   tiny =       1.1754944e-38
maxexp =    128   max =        3.4028235e+38
nexp =        8   min =        -max
---------------------------------------------------------------