que j'ai deux séquences temporelles dont les indices sont alignés de la manière suivante:indexation de duplicata des indices de séries temporelles aligné
import numpy as np
t1_ind = np.array([ 1, 1, 1, 2, 3, 4, 5, 5, 6])
t2_ind = np.array([20, 21, 22, 23, 23, 24, 25, 26, 27])
ce qui signifie que l'indice 1 de t1
soit aligné avec l'index 20, 21 et 22 de t2
(impliquant que t1
est plus rapide que t2
dans les trois premiers incréments) et ainsi de suite.
La sortie attendue devrait être:
y = np.array(([ 1, 2, 4, 5, 6],
[20, 23, 24, 25, 27]))
La logique est de « scanner » t1_ind
et t2_ind
et marquer à la fois le début et décalage de tous les segments en double. Dans cet exemple, l'entrée 1
dans t1_ind
est suivie de sa copie, de sorte que la paire de début est enregistrée dans y[:,0]
et la paire de décalage respective est y[:,1]
. Le segment dupliqué suivant dans t1_ind
commence et se termine par y[:,3]
et y[:,4]
, respectivement. t2_ind
est fait de la même manière, les paires résultantes sont y[:,1]
(ne sera pas enregistré deux fois si) et y[:,2]
. Il me semble similaire avec un problème de duplication-suppression mais je ne sais pas comment.
Désolé, il m'est difficile de penser à un titre correct et d'expliquer la logique en un mot. Merci pour toute aide.
Ne devrait pas * 3 * dans 't1_ind' rester? – Psidom
@Psidom 3 n'est pas dupliqué et ne marque pas le décalage (pour 23 dans 't2_ind', [4, 24]) – Francis