итерации по временным рядам в Python (numpy) - PullRequest
0 голосов
/ 02 мая 2018

Я хотел бы знать, что такое итерация по временным рядам (подходит любой массив) для получения таких вычислений, как простая чистая сеть и возврат журналов.

В 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 голосов
/ 02 мая 2018

Вместо зацикливания, как в случае с matlab, это достаточно просто, вы можете использовать понимание списка:

array([(r - rprev) / rprev for rprev, r in zip(X, X[1:])])

zip используется для перебора строк X со смещением между ними. Это довольно общий подход. Более конкретное решение этого примера - использовать функцию diff, чтобы найти разницу между строками в 'X':

diff(X, axis=0) / X[:-1]

, который даст те же результаты.

0 голосов
/ 02 мая 2018

Это довольно похоже на 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()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...