python - NumPy 错误 : invalid value encountered in power

标签 python numpy runtime-error

我有以下代码:

import numpy

def numpysum(n):
   a = numpy.arange(n) ** 2
   b = numpy.arange(n) ** 3
   c = a + b
   return c


size = 3000
c = numpysum(size)

运行时报错:

D:\Work\programming\python\test_1\src\test1_numpy.py:6: RuntimeWarning: invalid value encountered in power b = numpy.arange(n) ** 3

请注意,以下 numpyless 函数可以正常工作:

def pythonsum(n):
   a = list(range(n))
   b = list(range(n))
   c = []
   for i in range(len(a)):
      a[i] = i ** 2
      b[i] = i ** 3
      c.append(a[i] + b[i])
   return c

我猜这是因为我试图提高一个大数的 3 次方。除了使用 float ,我还能做什么?

我正在使用 Python 3.2。

最佳答案

numpy 实际上会在这方面照顾您。与标准 Python 不同,它的整数运算不适用于任意精度的对象。我猜你运行的是 32 位 python,因为相同的操作对我来说不会溢出:

>>> sys.maxsize
9223372036854775807
>>> size = 3000
>>> c = numpysum(size)
>>>

但他们最终会的。如果您手动控制类型的大小,则更容易看到:

>>> numpy.arange(10, dtype=numpy.int8)**10
__main__:1: RuntimeWarning: invalid value encountered in power
array([  0,   1,   0, -87,   0,  -7,   0, -15,   0,   0], dtype=int8)
>>> numpy.arange(10, dtype=numpy.int16)**10
array([     0,      1,   1024,  -6487,      0,    761, -23552,  15089,
            0,      0], dtype=int16)
>>> numpy.arange(10, dtype=numpy.int32)**10
array([          0,           1,        1024,       59049,     1048576,
           9765625,    60466176,   282475249,  1073741824, -2147483648], dtype=int32)
>>> numpy.arange(10, dtype=numpy.int64)**10
array([         0,          1,       1024,      59049,    1048576,
          9765625,   60466176,  282475249, 1073741824, 3486784401])

随着位数的增加,情况会有所改善。如果你真的想对 Python 任意大小的整数进行 numpy 数组操作,你可以将 dtype 设置为对象:

>>> numpy.arange(10, dtype=object)**20
array([0, 1, 1048576, 3486784401, 1099511627776, 95367431640625,
       3656158440062976, 79792266297612001, 1152921504606846976,
       12157665459056928801], dtype=object)

关于python - NumPy 错误 : invalid value encountered in power,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9140744/

相关文章:

python - 将随机图像从目录发布到推特

python - 在 sklearn 的 .fit() 方法中使用 numpy.ndarray 与 Pandas Dataframe

python - numpy 广播如何执行得更快?

Python 用 'numpy.ndarray' 创建一个字典

python - 检索字符串以进行单元测试

python - 美丽汤 <p> 参数

python - 如何使用 python 更新 Elastic Search ( Kibana ) 中可用的大量 Json 数据

python - 如何在 Python 中计算 PDF(概率密度函数)?

android - 刚刚获得 android studio 的最新更新,它确实破坏了我的安装。该怎么办?

android - 相对布局中的循环依赖错误。