Je travaille avec une matrice chiffrée, que j'appellerai A, composée de n lignes et de 5 colonnes. Supposons que toutes les valeurs de la colonne 2 sont constituées d'entiers positifs ou de zéros. Si A [j, 2] est égal à k, où k est un entier supérieur ou égal à 2, je voudrais faire tomber les k lignes précédentes de la matrice A; c'est-à-dire, les lignes j, j-1, ..., et j- (k-1), de la matrice A.Suppression de lignes dans le tableau numpy (matrice): Suppression des k lignes précédentes si la valeur de la colonne j est égale à k
Notez que si [j, 2] = k, les k lignes précédentes seront certainement égales à 0, il n'y a donc pas de «chevauchement». Mais ce ne sont pas les seuls éléments qui égalent 0 dans cette colonne.
Quelqu'un a-t-il des idées? J'ai utilisé numpy.delete et des fonctions similaires plusieurs fois, mais je ne peux pas générer une solution à ce problème.
Exemple:
A = matrix([[9,9,0,9,9],
[1,2,1,9,9],
[8,8,0,2,3],
[7,7,0,7,8],
[1,2,0,3,4],
[6,6,3,6,6],
[1,2,0,1,2]])
après l'opération, il devrait devenir:
Anew = matrix([[9,9,0,9,9],
[1,2,1,9,9],
[8,8,0,2,3],
[1,2,0,1,2]])
Parce que le '3' (dans l'avant-dernière rangée de A) signifie que les 3 lignes (à savoir l'avant-dernier + rangée des deux rangées précédentes ont dû être retirés de la matrice)
veuillez partager un exemple de vos données avec la sortie attendue. –
désolé, exemple maintenant inclus –
J est donné par l'utilisateur? –