python - Numpy 计算错误

标签 python numpy

<分区>

我正在像这段代码一样使用 numpy

>>>import numpy as np
>>>a=np.arange(1,100000001).sum()
>>>a
987459712

我想结果一定是这样的 5000000050000000

我注意到直到五个数字结果都还可以。 有人知道发生了什么吗?

问候

最佳答案

Numpy 在这里没有犯错。这种现象被称为 integer overflow .

x = np.arange(1,100000001)
print(x.sum())  # 987459712
print(x.dtype)  # dtype('int32')

arange 中用于给定输入的 32 位整数类型根本无法容纳 5000000050000000。它最多可以容纳 2147483647。 .

如果您显式使用更大的整数或 float 据类型,您将获得预期的结果。

a = np.arange(1, 100000001, dtype='int64').sum()
print(a)  # 5000000050000000

a = np.arange(1.0, 100000001.0).sum()
print(a)  # 5000000050000000.0

关于python - Numpy 计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209391/

相关文章:

python - 从卷中裁剪空数组(填充)

python - 求数值积分的根

python - 删除括号内包含的文本

python - 我怎样才能从 python 中的 xml 中删除 ns?

python - 如何用一个通用字符串值替换 Pandas 数据框列中的多个不同字符串?

numpy - 对单个图像进行预处理以进行预测。 (CNN 使用 Keras 构建和训练)

python - 如何在 numpy 中优化此函数的计算?

python - Numpy 压缩函数

Python:如何使用字符串索引( '[0][1][0]')作为多维数组的索引

python - NumPy 数组中滑动窗口中的最大值