如何使用numpy有效地计算系列?

时间:2012-02-21 13:49:06

标签: python optimization numpy

我想在numpy中创建一个包含数学系列值的数组,在本例中是前一个值的平方,给出一个起始值,即a_0 = 2,a_1 = 4,a_3 = 16 ,. ..

尝试在numpy中使用矢量化我认为这可能有效:

import numpy as np
a = np.array([2,0,0,0,0])
a[1:] = a[0:-1]**2

但结果是

array([2, 4, 0, 0, 0])

我现在已经知道numpy会在内部为输出创建一个临时数组,并在最后复制这个数组,这就是原始数组中零值失败的原因。 有没有办法使用numpy,numexpr或其他工具来矢量化这个函数?当快速numpy函数可用而没有进行for循环时,有哪些其他方法可以有效地计算一系列的值?

1 个答案:

答案 0 :(得分:6)

在NumPy中没有通用的方法来矢量化递归序列定义。这种特殊情况很容易在没有for循环的情况下编写:

>>> 2 ** 2 ** numpy.arange(5)
array([    2,     4,    16,   256, 65536])