我该如何处理numpy中的浮动精度?例如在下面的a==0
返回FALSE,即使高达机器精度是0:点状产品的凹凸机精度?
a = -2.22044605e-16
这是因为我正在向量的点积和,好像结果受到影响,即一个特别的问题视为“负面”数字。
np.finfo(float).eps
返回-2.22044605e-16
下面是一个例子:
a = np.array([[-2.22044605e-16,-2.22044605e-16]])
b = np.array([[5,5]])
np.dot(a,b)
array([[ -2.22044605e-15]])
a = np.array([[-2.22044605e-16,2.22044605e-16]])
np.dot(a,b.T)
array([[ 0.]])
你究竟是什么意思,处理浮点精度? –
'-2.22044605e-16'到机器精度不为零(而且它是一个负数)......我不确定你的意思是什么...... – mgilson
你误解了“resolution”属性。它是'10 ** - precision',其中'precision'是您正在检查的浮点类型可用的精度的近似小数位数。因此,'resolution'是一个(相当糟糕的)近似值,你可以添加到'1.0'的最小数量,而不用返回'1.0'。参见['finfo'文档](http://docs.scipy.org/doc/numpy/reference/generated/numpy.finfo.html)。 – user2357112