2017-10-19 2 views
1

J'ai un petit extrait de code et j'essaie de comprendre comment vous pouvez utiliser un autre tableau numpy comme index pour un autre tableau numpy.Comment fonctionne l'indexation de liste pour un tableau numpy?

bmi = np.array([13,14,15,22]) 
light = np.array(bmi) < 21 
print(bmi[light]) 

sortie: [13,14,15]

Je comprends que lorsque vous travaillez avec des tableaux numpy choses sont faites élément par élément donc mon hypothèse pour bmi [lumière] serait qu'il imprime uniquement la valeurs correspondantes dans bmi qui ont une valeur de vrai dans la lumière.

+1

Je pense que vous devez lire sur 'boolean-indexing' - https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html#boolean-array-indexing – Divakar

Répondre

0

Si vous d'imprimer light vous obtiendrez:

[ True True True False] 

Ce qui est un masque booléen.

Maintenant, lorsque vous avez utilisé print(bmi[light]), vous avez filtré bmi à True.

Vous pourriez avoir inversé ce masque en utilisant ~ pour obtenir [22] seulement:

print(bmi[~light]) 

Comme indiqué dans les commentaires, vous pouvez en savoir plus sur le masquage booléen here.