我想知道numpy相当于迭代时间序列(任何数组都没问题)来进行简单的网络和日志返回等计算。
在Matlab中,我会使用以下内容:
X = some T x N array
for i = 2:length(X)
returns(i,:) = (returns(i,:) - returns(i-1,:))/returns(i-1,:)
end
谢谢!
答案 0 :(得分:1)
在numpy中非常相似:
import numpy as np
X = np.array([[1,2,3],[4,5,6]])
for i in range(1,len(X)):
returns[i,:] = (returns[i,:] - returns[i-1,:]) / returns[i-1,:]
但请注意,您可以使用for
实现与np.diff(returns, axis=0) / returns[:-1]
循环相同的计算(类似地,MATLAB具有diff()
函数)。
答案 1 :(得分:0)
而不是像在matlab中那样循环,这很简单,你可以使用列表理解:
array([(r - rprev) / rprev for rprev, r in zip(X, X[1:])])
zip
用于迭代X
的行,它们之间有偏移量。
这是一种相当普遍的方法。
此示例的更具体的解决方案是使用diff
函数来查找' X'中的行之间的差异:
diff(X, axis=0) / X[:-1]
将产生相同的结果。