Comprehension de liste sur condtion vectorielle
Bonjour,
soit les deux listes suivantes :
Code:
1 2
| a = [0,0,1,0,1,0]
b = [1,2,3,4,5,6] |
Je souhaite extraire les éléments de b pour lesquels a est positif.
Autrement dit avoir in fine la liste [3,5]
Ceci ne marche pas :
Code:
c = [v for v in b if a>0]
En rusant un peu, je me dépatouille avec ce code là qui donne bien le résultat escompté :
Code:
c = [v for (n,v) in enumerate(b) if a[n]>0]
Néanmoins, je ne suis pas sûr que ça soit très propre... Y'a-t'il plus "pythonic" comme solution ?
Idéalement j'aimerais rester en python pur mais s'il existe une solution élégante avec un module, je suis preneur !
Par exemple, j'avais pensé à numpy mais np.where() ne donne pas ce que je souhaite. Il me semble que np.where renverra toujours un vecteur de la même taille que ses arguments...
Code:
np.where(np.array(a)>0, b, None)
Merci d'avance pour vos retours éclairés :)
D.