Bonjour à tous,
je débute avec Numpy et n'arrive pas à faire une selection booléenne sur matrice selon deux directions en même temps...
>> x=np.array([1, -1, 1, -1])
>> y=np.array([1, 1, -1, -1])
>> A=np.arange(16).reshape([4,4])
>>A
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Je souhaiterais avoir uniquement :
- les éléments dont le numéro de ligne vérifie x>0 (donc lignes 0 et 2)
- les éléments dont le numéro de colonne vérifie y>0 (donc colonnes 0 et 1)
Donc quelque chose comme :
A[???????]
array([[0, 1], [8, 9]])
J'ai tenté ceci sans succès (et ne comprends pas le résultat) :
>> A[x>0] # Ceci me sélectionne bien les lignes 0 et 2 comme attendu
array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11]])
>> A[:, y>0] # Ceci me sélectionne bien les colonnes 0 et 1 comme attendu
array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]])
>> A[x>0, y>0] # Pourtant ceci ne fonctionne pas...
array([0, 9])
Une âme charitable pourrait m'aider sur ce point ??
Merci d'avance et à bientôt 🙂
Donut