numpy数组中的float精度与其元素不同

时间:2016-09-19 05:54:14

标签: python numpy floating-point precision

我有numpy.float32类型的值,以及带有dtype="float32"的numpy数组。

当使用单个数组元素引用直接输出值的表示时,我得到的精度与输出数组对象本身的表示时的精度不同。

随后的计算也有点偏差,因此后者的值似乎是在连续的矢量/矩阵艺术中使用的。

为什么会有差异,这些精确的“异常”必须手动处理吗?

>>> a = math.pi / 2

>>> a
1.5707963267948966

>>> elementx = numpy.float32(math.cos(a))

>>> arrayx = numpy.array([elementx], dtype="float32")

>>> elementx
6.1232343e-17

>>> arrayx
array([  6.12323426e-17], dtype=float32)

>>> t = numpy.float32(3.0)

>>> t * elementx
1.8369703e-16

>>> t * arrayx
array([  1.83697028e-16], dtype=float32)

(Python 3.5.2,GCC 5.4.0,linux 4.4.0-21-generic)

1 个答案:

答案 0 :(得分:2)

这些只是字符串表示的差异,值是相同的,计算也没有关闭。

>>> (t * elementx) == (t * arrayx)[0]
True