Récupérer index des éléments différents de 0

Récupérer index des éléments différents de 0 - Python - Programmation

Marsh Posté le 15-11-2012 à 14:31:51    

Bonjour à tous.
 
Assez novice dans la programmation python, je souhaite faire un calcul qui me semble "simple" :
 
J'ai 2 matrices de même taille du type
 
A = [ 0 0 0 0 0 0 0 1 2 4 8 9 0 0 0 4 5 5 6 6 0 0 0 0 ]
 
B = [ 4 7 9 9 9 4 5 6 1 2 4 8 9 5 6 6 4 5 5 6 6 1 4 7 ]
 
Je souhaite extraire de la matrice A tous les éléments différents de 0. A partir de la bibliothèque numpy, je fais C = A[A>0].
 
Et je souhaiterai dans la matrice B, récupérer l'élément situé à la même position que dans A (voir en gras).
 
J'ai tenté un D = B[A>0] mais il me semble que c'est faux.  
 
Des idées ? Merci d'avance  :)

Reply

Marsh Posté le 15-11-2012 à 14:31:51   

Reply

Marsh Posté le 15-11-2012 à 15:25:00    

Avec numpy aucune idée. Avec des arrays Python basiques je ferais du decorate-filter-undecorate:
 

Code :
  1. A = [ 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 8, 9, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0, 0, 0 ]
  2. B = [ 4, 7, 9, 9, 9, 4, 5, 6, 1, 2, 4, 8, 9, 5, 6, 6, 4, 5, 5, 6, 6, 1, 4, 7 ]
  3.  
  4. print [b for a, b in zip(A, B) if a > 0]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 15-11-2012 à 17:37:38    

masklinn a écrit :

Avec numpy aucune idée. Avec des arrays Python basiques je ferais du decorate-filter-undecorate:
 

Code :
  1. A = [ 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 8, 9, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0, 0, 0 ]
  2. B = [ 4, 7, 9, 9, 9, 4, 5, 6, 1, 2, 4, 8, 9, 5, 6, 6, 4, 5, 5, 6, 6, 1, 4, 7 ]
  3.  
  4. print [b for a, b in zip(A, B) if a > 0]



Merci pour ta réponse  :) .
 
Si je suis en multi-dimensionnel est ce que c'est toujours valable ?

Reply

Marsh Posté le 15-11-2012 à 18:29:26    

Pas identiquement, les listcomps Python ne sont pas multidim. Mais si tu peux zipper et mapper des matrices avec numpy il devrait être possible de faire un truc similaire, mais je connais pas assez ce package pour te conseiller.

 

edit: ou alors vu que ta sortie est de toute manière linéaire, tu commences par linéariser tes matrices puis tu appliques ça.

Message cité 1 fois
Message édité par masklinn le 15-11-2012 à 18:29:58

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-11-2012 à 10:35:49    

masklinn a écrit :

Pas identiquement, les listcomps Python ne sont pas multidim. Mais si tu peux zipper et mapper des matrices avec numpy il devrait être possible de faire un truc similaire, mais je connais pas assez ce package pour te conseiller.
 
edit: ou alors vu que ta sortie est de toute manière linéaire, tu commences par linéariser tes matrices puis tu appliques ça.


Merci, je suis passé par là, il me semble obtenir un résultat correct  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed