【发布时间】:2017-03-02 13:57:03
【问题描述】:
我习惯了 Matlab,所以当我想在 Python 中创建一个10**j 的数组时,其中j 是一个整数,我使用以下代码:
import numpy as np
a=np.array(range(11))
b=10**a
但是我的机器给了我以下输出:
array([ 1, 10, 100, ..., 100000000,
1000000000, -2147483648], dtype=int32)
最后一个条目显然是错误的。现在,我知道我可以做到以下几点
b=np.array([10**k for k in range(11)])
这给出了正确答案,所以我猜问题出在numpy函数array(当然,我可以通过将a保存为int64整数来避免这个问题,但是会有溢出问题更大的j)。似乎在很多情况下,在对数组进行数学运算时,可能会陷入整数溢出的陷阱。我想知道是否有办法避免这个问题?
【问题讨论】:
-
注意你也可以使用
np.arange(11, dtype='int32') -
你不能使用花车有什么原因吗?这通常是处理具有少量有效数字的大指数时的解决方案。
-
谢谢!我没想到……我真傻。