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