【问题标题】:How can I use numpy to calculate a series effectively?如何使用 numpy 有效地计算序列?
【发布时间】:2012-03-11 19:56:54
【问题描述】:

我想在 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 循环时,还有哪些其他方法可以有效地计算序列的值?

【问题讨论】:

标签: python optimization numpy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多