限制具有较小小数点的数组的浮点数组

时间:2014-10-05 17:49:40

标签: numpy matrix floating-point-precision

问题:

我们的问题是在使用像PLSA这样的机器学习算法时,巨大的浮点值需要花费很多时间。现在,我们如何将浮点精度降低到2位小数并进行数学运算?

我们拥有什么:

使用以下numpy命令初始化np.zeros([2,4,3],np.float)

ndarray: [[[ 0.09997559  0.          0.89990234]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]]

 [[ 0.          0.          0.        ]
  [ 0.30004883  0.30004883  0.30004883]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]]]


**What we needed:**

[[[ 0.1         0.          0.9]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]]

 [[ 0.          0.          0.        ]
  [ 0.3         0.3         0.3       ]
  [ 0.          0.          0.        ]
  [ 0.          0.          0.        ]]]

1 个答案:

答案 0 :(得分:1)

您可以使用半精度浮点数来减少内存使用(符号位,5位指数,10位尾数)。请参阅this

>>> b=np.zeros([2,4,3],np.float)
>>> b.nbytes
192
>>> c=np.zeros([2,4,3],np.float16)
>>> c.nbytes
48