【发布时间】:2016-07-27 16:21:20
【问题描述】:
我了解 NumPy 浮点数组元素的精度受到机器 epsilon 的限制。
但是,我很难理解为什么将数组的数据类型指定为 Python 对象,而不是默认浮点数,会导致数组存储我提供给它的精确值。有人可以解释一下这种行为吗?
下面的代码说明了与浮点数据类型相关的舍入误差,以及使用对象数据类型时的精度变化。
import numpy as np
np.set_printoptions(precision=64)
MyArray = np.empty(2)
MyArray.fill(0.442)
print(MyArray)
# [ 0.442000000000000003996802888650563545525074005126953125
# 0.442000000000000003996802888650563545525074005126953125]
MyArray_precise = np.empty(2, dtype = object)
MyArray_precise.fill(0.442)
print(MyArray_precise)
# [0.442 0.442]
我在 64 位 Windows 上运行 32 位 Python 2.7.12 安装。
【问题讨论】:
标签: python numpy precision eps