Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 协方差矩阵应相等,但不相等_Python_Numpy_Floating Point_Covariance - Fatal编程技术网

Python 协方差矩阵应相等,但不相等

Python 协方差矩阵应相等,但不相等,python,numpy,floating-point,covariance,Python,Numpy,Floating Point,Covariance,我用两种方法计算协方差,我认为它们应该是一致的,但它们不是。 方法1:计算数据数组切片的协方差矩阵 方法2:计算整个数据数组的协方差矩阵,并引用该矩阵的等效切片。 差异很小(1e-18级),但这些差异随着我的代码中的后续计算而增加,并阻止了再现性。这是一个浮点问题吗?如果是这样的话,我仍然想了解为什么会发生这种情况,以及如何避免它。 我在numpy 1.16.3上 谢谢 将numpy导入为np state=np.random.RandomState(1) X=州兰特(40100) A=np.co

我用两种方法计算协方差,我认为它们应该是一致的,但它们不是。 方法1:计算数据数组切片的协方差矩阵 方法2:计算整个数据数组的协方差矩阵,并引用该矩阵的等效切片。 差异很小(1e-18级),但这些差异随着我的代码中的后续计算而增加,并阻止了再现性。这是一个浮点问题吗?如果是这样的话,我仍然想了解为什么会发生这种情况,以及如何避免它。 我在numpy 1.16.3上 谢谢

将numpy导入为np
state=np.random.RandomState(1)
X=州兰特(40100)
A=np.cov(X[:20])
B=np.cov(X)[:20,:20]
打印(np.数组_等于(A,B))
差异=A-B
打印(np.最大值(差异))

我本来希望数组_equal的结果是真的,但我得到了假的

通过运行您的示例,我得到了真的响应,差等于0。Numpy v.1.16.3我可以复制,但我在1.12。1@ZarakiKenpachi真奇怪,谢谢你的帮助checking@DanielF感谢您的检查,似乎问题的级别低于NUMPYY,您无法依赖这种再现性。也许x*y转置操作是用优化的blas dger或类似的东西执行的,结果将取决于fma的使用、子矩阵操作的块大小等。。。不同的路径,不同的结果。通过运行您的示例,我得到了真实的响应,差值等于0。Numpy v.1.16.3我可以复制,但我在1.12。1@ZarakiKenpachi真奇怪,谢谢你的帮助checking@DanielF感谢您的检查,似乎问题的级别低于NUMPYY,您无法依赖这种再现性。也许x*y转置操作是用优化的blas dger或类似的东西执行的,结果将取决于fma的使用、子矩阵操作的块大小等。。。不同的路径,不同的结果。