Python numpy矩阵的结果不一致

时间:2016-07-13 13:07:06

标签: python numpy matrix

我有一个带浮点值的矩阵,我尝试获取列和行的摘要。 此矩阵是对称的

>>> np.sum(n2[1,:]) #summing second row
0.80822400592582844
>>> np.sum(n2[:,1]) #summing second col
0.80822400592582844
>>> np.sum(n2, axis=0)[1]
0.80822400592582899
>>> np.sum(n2, axis=1)[1]
0.80822400592582844

它给出了不同的结果。为什么呢?

1 个答案:

答案 0 :(得分:2)

numpy使用的数字为double s,精确度最多为16位小数。看起来差异发生在第16位,其余数字相等。如果您不需要此准确性,则可以使用舍入函数np.around(),或者您实际上可以尝试使用np.longdouble类型来获得更高的准确度。

您可以使用np.finfo

检查类型的准确性
>>> print np.finfo(np.double).precision
>>> 15

一些numpy函数不会接受我认为的长双精度,并且会将其强制转换为double,从而截断额外的数字。 Numpy precision