作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
T(i) = Tm(i) + (T(i-1)-Tm(i))**(-tau(i))
Tm
和tau
是之前计算过的长度相同的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/
我是一名优秀的程序员,十分优秀!