le filtrage des lignes dans un tableau numpy selon les valeurs dans une plage
Laissez un tableau:
a =np.array([[1,2],[3,-5],[6,-15],[10,7]])
d'obtenir des lignes avec des éléments de la deuxième colonne ci-dessus -6' possible de faire
>>> a[a[:,1]>-6]
array([[ 1, 2],
[ 3, -5],
[10, 7]])
mais comment obtenir des lignes avec le deuxième élément entre -6;3?
J'ai essayé:
>>> a[3>a[:,1]>-6]
et aussi (ce qui génère une erreur):
>>> np.ma.masked_inside(a,-6,3)
qui donne:
masked_array(data =
[[-- --]
[-- --]
[6 -15]
[10 7]],
mask =
[[ True True]
[ True True]
[False False]
[False False]],
fill_value = 999999)
mais le résultat n'est pas trop clair
Merci
jp
OriginalL'auteur Jean-Pat | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
GM, plz postez vos commentaires ici, ou comme une réponse distincte
OriginalL'auteur Antony Hatchkins
La
np.ma.masked_inside(a, -6, 3)
permettra de créer unMaskedArray
objet, où les valeurs entre -6 et 3 sont masquées (qui est, marqué comme non valide). En d'autres termes, vous êtes filtrage hors les valeurs entre -6 et 3.Au lieu de cela, vous devez utiliser
np.ma.masked_outside(a, -6, 3)
:À noter qu'avec cette fonction, vous êtes le filtrage de l'ensemble du tableau, élément par élément, ce qui n'est pas ce que vous voulez.
L'indexation approche adoptée dans une autre solution est de loin la plus simple et compréhensible.
OriginalL'auteur Pierre GM