结果与Python numpy矩阵不一致
我有一个带有浮点值的矩阵,我试图得到列和行的摘要此矩阵是对称的结果与Python numpy矩阵不一致,python,numpy,matrix,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, a
>>> 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
它给出了不同的结果。为什么?数字
numpy
使用的是double
s,精度高达16位小数。看起来差异出现在第16位,其余数字相等。如果不需要这种精度,可以使用舍入函数np.around()
,或者可以尝试使用np.longdouble
类型来获得更高的精度
您可以使用np.finfo
检查类型的准确性:
>>> print np.finfo(np.double).precision
>>> 15
我相信有些numpy函数不会接受长双精度,会将其转换为双精度,截断多余的数字 有一点不相关的注意事项:第一行(或列)的索引为0,而不是1。很可能这就是原因;为了完整性,应该提到浮点数的和取决于求和的顺序,矩阵行或矩阵列的求和可能恰好是不同的顺序(必须查看源代码才能确定)。