当使用numpy.array时,我应该使用numpy.float64而不是Python float

时间:2017-08-08 13:03:11

标签: python numpy floating-point precision

到目前为止我没有遇到任何问题,所以这纯粹是出于好奇。

在Python中,我通常定义浮点数和浮点数组,如下所示:

import numpy as np

s = 1.0
v = np.array([1.0, 2.0, 3.0])

如果上述情况sfloat,则v的元素属于numpy.float64类型。

为了更加一致,我可以,例如,这样做:

import numpy as np

s = np.float64(1.0)
v = np.array([1.0, 2.0, 3.0])

从准确性/精确度的角度来看,是否存在建议使用“一致”方法的情况?如果有的话,我会在“不一致”的方法中出现什么样的错误?

1 个答案:

答案 0 :(得分:2)

Python(至少CPython)在内部使用双精度的float类型 - 双精度是64位浮点数(可能并不总是但我没有找到平台+编译器,其中双精度不是64位花车)。

因此,无论您将其保留为float还是np.float64,都不应该发生任何问题。

但是,如果你使用Pythons float和NumPys np.float32,你会发现差异,因为float具有更高的精度(64位)而不是np.float32(32位)。