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]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
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

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
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