python - 是否可以对 NumPy 数组的递归计算进行矢量化,其中每个元素都依赖于前一个元素?

标签 python numpy vectorization

T(i) = Tm(i) + (T(i-1)-Tm(i))**(-tau(i))

Tmtau是之前计算过的长度相同的NumPy向量,希望创建一个新的向量T . i 仅用于指示所需的元素索引。

这种情况需要for循环吗?

最佳答案

您可能认为这会起作用:

import numpy as np
n = len(Tm)
t = np.empty(n)

t[0] = 0  # or whatever the initial condition is 
t[1:] = Tm[1:] + (t[0:n-1] - Tm[1:])**(-tau[1:])

但事实并非如此:您实际上不能以这种方式在 numpy 中进行递归(因为 numpy 会计算整个 RHS,然后将其分配给 LHS)。

所以除非你能想出这个公式的非递归版本,否则你会被一个显式循环困住:

tt = np.empty(n)
tt[0] = 0.
for i in range(1,n):
    tt[i] = Tm[i] + (tt[i-1] - Tm[i])**(-tau[i])

关于python - 是否可以对 NumPy 数组的递归计算进行矢量化,其中每个元素都依赖于前一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407984/

相关文章:

arrays - 如何重复向量的每第三个元素?

python - numpy.dot 对大型数组有精度限制吗?

python - 'TypeError : argument 1 must be pygame. Surface,not list':不理解

python - 广播 NumPy 数组时实际发生了什么

python - 对象到 Python 中的字符串

python-3.x - Numpy 的按位运算和垃圾收集器

python - 通过无循环的 bool 索引数组的 bool 索引数组

java - 在 java 中矢量化文本文件以进行 kmeans 聚类 java encog

Python 条件 XML 编写

python - 当我在 shell 窗口中收到错误时,是否可以创建弹出消息?