numpy scipy.signal.correlate输出依赖于操作系统

tgabmvqs  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(103)

在我的代码中,我使用scipy.signal.correlate和1D数组,但它在Windows 11和Ubuntu上给了我不同的结果。
Linux的结果应该是正确的,因为经过进一步的计算,它是现实的。
根据变量的路径,似乎罪魁祸首是multiarray.correlate,因为在numeric.py中调用之前,所有变量的值对于2个操作系统都是相等的
部分规格:它使用了模式full和方法auto,最后使用了方法direct,因此调用了np.convolve,然后调用了multiarray.correlate
为什么会发生这种情况,我如何在操作系统中获得相同的结果?

wbgh16ku

wbgh16ku1#

这个问题与scipy.signal.correlatemultiarray.correlate没有直接关系,但事实是,在Windows中,numpy使用numpy.int32,而在Linux中,它根据体系结构正确选择了类型,在这种情况下,它选择了numpy.int64。这导致在互相关的计算过程中溢出。
请注意,这并没有写在numpy的文档中。
资料来源:
https://github.com/numpy/numpy/issues/9464
numpy array dtype is coming as int32 by default in a windows 10 64 bit machine

相关问题