早上好,当我使用下面的代码时,我得到了错误的结果
import numpy as np
print(np.convolve([10**9], [ 10**9]))
我得到:-1486618624,而我应该得到:(10的9次方)*(10的9次方)=(10的18次方)
如何克服这个问题? 很好奇我通过使用得到了正确的结果:
print(np.convolve([10**10], [ 10**8]))
这给了我 1000000000000000000
当我这样做时:
print(np.convolve([10], [ 10**9]))
我再次得到一个愚蠢的结果,如 1410065408,而不是 10 的 10 次方。看起来每次出现 10 的 9 次方时,我都会得到奇怪的结果。 谢谢
最佳答案
请注意,10**9
是一个整数,在 numpy 中被解释为 int32
,即 32 位整数。该类型可以表示的最大值是2147483647
,如果大于该值,则会发生溢出。如果您想使用整数类型,请使用 np.int64
代替,否则使用 float ,例如np.float
:
np.convolve(np.array([10**9], dtype=np.int64), np.array([10**9], dtype=np.int64))
关于python - np.convolve 与 10**9 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67462551/