python - np.convolve 与 10**9 有什么问题?

标签 python numpy digits

早上好,当我使用下面的代码时,我得到了错误的结果

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]))

我再次得到一个愚蠢的结果,如 141006540​​8,而不是 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/

相关文章:

python - 有没有办法在单个数据点内绘制多个图以与分类器一起使用?

javascript - 在没有响应的情况下执行 python 函数 - Django

python - 使用来自不同数据集的 for 循环进行绘图

python - numpy 可以像 matlab 那样解释索引列吗

c - 计算正整数区间内 base2 位数(位数)总和的有效算法

c - C语言如何用字节元素数组实现128位线性反馈移位寄存器

python - 如何检查 Python 中当前有效的类型

python - 如何遍历列表并将每个元素作为包含自身作为唯一元素的列表传递?

python - Numpy 规范化多维 (>=3) 数组

ios - NSNumberFormatter setPerMillSymbol被忽略