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

mtg*_*ves 5 python floating-point precision numpy

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

在 Python 中,我通常这样定义浮点数和浮点数数组:

import numpy as np

s = 1.0
v = np.array([1.0, 2.0, 3.0])
Run Code Online (Sandbox Code Playgroud)

在上面的例子中s是 a float,但 的元素v是类型numpy.float64

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

import numpy as np

s = np.float64(1.0)
v = np.array([1.0, 2.0, 3.0])
Run Code Online (Sandbox Code Playgroud)

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

MSe*_*ert 4

Python(至少CPython)使用双精度数,因为它float数 - 并且双精度数是 64 位浮点数(也许并不总是如此,但我还没有找到双精度数不是 64 位浮点数的平台+编译器)。

因此,无论您是否将它们保留为float或 ,您都不应该预期会出现任何问题np.float64

但是,如果您使用 Pythonfloat和 NumPys,np.float32您可能会遇到差异,因为 其float精度(64 位)比 a(32 位)更高np.float32