迭代Python中的时间序列(numpy)

时间:2018-05-02 16:49:01

标签: python matlab numpy

我想知道numpy相当于迭代时间序列(任何数组都没问题)来进行简单的网络和日志返回等计算。

在Matlab中,我会使用以下内容:

X = some T x N array

for i = 2:length(X)
    returns(i,:) = (returns(i,:) - returns(i-1,:))/returns(i-1,:)
end

谢谢!

2 个答案:

答案 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]

将产生相同的结果。