【发布时间】:2016-09-13 06:57:23
【问题描述】:
我有一个数据集,我正在尝试对其应用一些算术方法。 问题是它给了我相对较大的数字,而当我使用 numpy 进行操作时,它们的库存为 0。
奇怪的是,当我计算数字时,它们有一个 int 值,当我使用 numpy 计算它们时它们才变成零。
x = np.array([18,30,31,31,15])
10*150**x[0]/x[0]
Out[1]:36298069767006890
vector = 10*150**x/x
vector
Out[2]: array([0, 0, 0, 0, 0])
我当然检查过它们的类型:
type(10*150**x[0]/x[0]) == type(vector[0])
Out[3]:True
如何使用 numpy 计算这么大的数字而不看到它们变成零?
请注意,如果我们在开始时删除因子 10,问题会发生轻微变化(但我认为这可能是类似的原因):
x = np.array([18,30,31,31,15])
150**x[0]/x[0]
Out[4]:311075541538526549
vector = 150**x/x
vector
Out[5]: array([-329406144173384851, -230584300921369396, 224960293581823801,
-224960293581823801, -368934881474191033])
负数表示python中int64类型的最大数是交叉的不是吗?
【问题讨论】:
-
你能用浮点数
np.array([18.0, 30, 31, 31, 15])代替int吗? -
不,不要使用浮点值。它们可能看起来有效,但在这些值范围内它们的精度将是可怕的。你的计算有效,但结果是错误的(你没有注意到)。
标签: python arrays numpy largenumber