Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结果与Python numpy矩阵不一致_Python_Numpy_Matrix - Fatal编程技术网

结果与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。很可能这就是原因;为了完整性,应该提到浮点数的和取决于求和的顺序,矩阵行或矩阵列的求和可能恰好是不同的顺序(必须查看源代码才能确定)。