Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同时使用numpy.array时,是否应该使用numpy.float64而不是Python float_Python_Numpy_Floating Point_Precision - Fatal编程技术网

在同时使用numpy.array时,是否应该使用numpy.float64而不是Python float

在同时使用numpy.array时,是否应该使用numpy.float64而不是Python float,python,numpy,floating-point,precision,Python,Numpy,Floating Point,Precision,到目前为止,我还没有遇到任何问题,所以这是一个纯粹出于好奇的问题 在Python中,我通常定义浮点数和浮点数数组,如下所示: import numpy as np s = 1.0 v = np.array([1.0, 2.0, 3.0]) 在上述情况下,s是一个float,但是v的元素类型是numpy.float64 例如,为了更加一致,我可以这样做: import numpy as np s = np.float64(1.0) v = np.array([1.0, 2.0, 3.0])

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

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

import numpy as np

s = 1.0
v = np.array([1.0, 2.0, 3.0])
在上述情况下,
s
是一个
float
,但是
v
的元素类型是
numpy.float64

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

import numpy as np

s = np.float64(1.0)
v = np.array([1.0, 2.0, 3.0])
从准确性/精密度的角度来看,是否存在建议使用“一致”方法的情况?“不一致”方法中可能会出现什么样的错误(如果有的话)?

Python(至少)在内部使用double作为它的
float
类型-double是64位的float(可能不总是,但我还没有找到一个平台+编译器,其中double不是64位的float)

因此,无论您将它们保持为
float
np.float64
,您都不应该期望出现任何类型的问题


但是,如果您使用Pythons
float
和NumPys
np.float32
,您可能会看到差异,因为
float
np.float32
(32位)具有更高的精度(64位)。

C double有8个字节的假设仍然硬连接到CPython源代码中的各个位置,因此,如果CPython遇到一个双精度不是64位的平台,它可能会严重崩溃。(是的,我假设字节有8位,但如果CPython遇到一个字节没有8位的平台,它将更糟糕地收支平衡。)所以,你认为双精度是64位浮点是一个相当安全的假设。:-)这里有一个这样的例子,在封送模块中假定8字节双精度:@MarkDickinson,很高兴知道。我只是做了一个肤浅的搜索,当我找到作者想要的问题时,我认为可能会有差异。如果我想要一个特殊数据类型的标量,我会使用
s=np.array(1.0,dtype=…)