OVH Cloud OVH Cloud

choisir les elements d un array suivant une condition

1 réponse
Avatar
sylvain
Bonjour !

J'aimerais adapter un programme que j avais ecrit en Matlab (car je
prefere python et matplotlib, c'est gratuit et les plots sont tres
jolis) ...

Je debute en python scientitfiques et il y a quelque chose que je n
arrive pas a faire :

voila j ai un array de cette forme

M= [
[a_1,a_2,...,a_n],
[b_1,b_2,...,b_n]
]

Je voudrais retourner a partir de ce tableau le tableau



[
[a_{i1},a_{i2},...,a_{in}],
[b_{i1},b_{i2},...,b_{in}]
]

ou on a la condition a_{ij}>p , pour tout j. (En gros je veux garder les
colonnes de la matrice ou la premiere coordonnee est plus grande que p).

Je sais trouver les indices ou ai>p par : where(M[0]>p,1,0)
En matlab, on peut dire M[:, where(M[0]>p,1,0)] et ca ressort toutes
les colonnes ou on a 1 dans where(M[0]>p,1,0) ?

Y a t il un truc similaire en Python ?

Merci a tous ceux qui liront ce post
Tres cordialement,
s.

1 réponse

Avatar
sylvain
Bonjour !

J'aimerais adapter un programme que j avais ecrit en Matlab (car je
prefere python et matplotlib, c'est gratuit et les plots sont tres
jolis) ...

Je debute en python scientitfiques et il y a quelque chose que je n
arrive pas a faire :

voila j ai un array de cette forme

M= [
[a_1,a_2,...,a_n],
[b_1,b_2,...,b_n]
]

Je voudrais retourner a partir de ce tableau le tableau



[
[a_{i1},a_{i2},...,a_{in}],
[b_{i1},b_{i2},...,b_{in}]
]

ou on a la condition a_{ij}>p , pour tout j. (En gros je veux garder les
colonnes de la matrice ou la premiere coordonnee est plus grande que p).

Je sais trouver les indices ou ai>p par : where(M[0]>p,1,0)
En matlab, on peut dire M[:, where(M[0]>p,1,0)] et ca ressort toutes
les colonnes ou on a 1 dans where(M[0]>p,1,0) ?

Y a t il un truc similaire en Python ?

Merci a tous ceux qui liront ce post
Tres cordialement,
s.


Je me reponds ! j ai decouvert la fonction take : du coup ca donne

take(M,nonzero(where(M[0]>p,1,0)),1)

**nonzero(where(M[0]>p,1,0)) donne les indices ou where(M[0]>p,1,0) est
non nul c est a dire quand M[0]>p
**take(M,...,1) donne les colonnes indice's par nonzero(....)

!