[PYTHON] [numpy] Créer une matrice de fenêtre mobile à partir de données de séries chronologiques multidimensionnelles

Ancienne histoire

[\ numpy ] Créer une matrice de fenêtre mobile à partir de données de séries temporelles - Qiita J'ai essayé d'étendre cela aux données multidimensionnelles.

Chose que tu veux faire

Étant donné ndarray x '', considère la dernière dimension comme le temps et crée un ndarray y '' avec les données contenues dans une fenêtre mobile d'une largeur de $ w $.

Lorsque `` x '' est unidimensionnel

x = 
\begin{pmatrix}
x_0 & x_1 & \cdots & x_{n-1}
\end{pmatrix}

Puis

y = 
\begin{pmatrix}
x_0 & x_1 & \cdots & x_{n-w} \\
x_1 & x_2 & \cdots & x_{n-w+1} \\
\vdots & \vdots & & \vdots \\
x_{w-1} & x_w & \cdots & x_{n-1} \\
\end{pmatrix}

Ce sera. De plus, lorsque `` x '' est bidimensionnel

x = 
\begin{pmatrix}
x_{0,0} & x_{0,1} & \cdots & x_{0,n-1} \\
\vdots & \vdots & & \vdots \\
x_{m-1,0} & x_{m-1,1} & \cdots & x_{m-1,n-1}
\end{pmatrix}

Ensuite, lors du tranchage dans la troisième dimension

y_{:,:,t} = 
\begin{pmatrix}
x_{0,t} & x_{0,t+1} & \cdots & x_{0,t+w-1} \\
\vdots & \vdots & & \vdots \\
x_{m-1,t} & x_{m-1,t+1} & \cdots & x_{m-1,t+w-1}
\end{pmatrix}

Créez un ndarray `` y '' tel que C'est pareil même s'il y a plus de dimensions.

code

import numpy as np

def moving_window_matrix(x, window_size):
    n = x.shape[-1]
    new_shape = tuple(x.shape[0:-1]) + (window_size, n-window_size+1)
    stride = x.strides[-1]
    return np.lib.stride_tricks.as_strided(
        x,
        shape=new_shape,
        strides=x.strides + (stride,)).copy()

x = np.arange(30).reshape((3,10))
print(x)
window_size = 3
y = moving_window_matrix(x, window_size)
print(y[:, :, 0])
print(y[:, :, 1])
print(y[:, :, 2])
print(y[:, :, 7])

Recommended Posts

[numpy] Créer une matrice de fenêtre mobile à partir de données de séries chronologiques multidimensionnelles
Obtenez des données de séries chronologiques de k-db.com avec Python
Extraire les périodes qui correspondent à un modèle spécifique des données qualitatives de séries chronologiques de pandas
Quantité d'entités pouvant être extraite des données de séries chronologiques
Prédire à partir de diverses données en Python à l'aide de l'outil de prédiction de séries chronologiques Facebook Prophet
Créer un bloc de données à partir des données textuelles de course de bateaux acquises
Bibliothèque tsfresh qui extrait automatiquement les caractéristiques des données de séries chronologiques
Une histoire de regroupement de données de séries chronologiques d'échange
Programme Python qui agrège l'utilisation du temps à partir des données icalendar
Créer un tableau numpy python
Créer un fichier de données factice
[Python] Tracer des données de séries chronologiques
Traiter les données extraites d'un certain système de point de vente pour créer un tableau récapitulatif par produit et par heure
Créer une API qui renvoie les données d'un modèle à l'aide de turicreate
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Lors du traçage des données de séries chronologiques et de l'obtention d'une erreur de débordement matplotlib
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Créez un Dataframe pandas à partir d'une chaîne.
À propos des données de séries chronologiques et du surentraînement
Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Juillet, un certain, M5 ~ Histoire d'échec de la compétition de données de séries chronologiques pour débutants Kaggle ~
Utilisez Matplotlib pour créer plusieurs graphiques linéaires à partir d'un bloc de données à la fois
[Kaggle] J'ai essayé l'ingénierie de quantité de caractéristiques de données de séries chronologiques multidimensionnelles à l'aide de tsfresh