Nachdem ich eine Zeitlang herumgespielt habe, habe ich herausgefunden, was ich mache, und stelle sie hier, in der Hoffnung, dass es anderen hilft.
Intuitiv ist np.where
wie fragen "sagen Sie mir, wo in diesem Array, Einträge eine gegebene Bedingung erfüllen".
>>> a = np.arange(5,10)
>>> np.where(a < 8) # tell me where in a, entries are < 8
(array([0, 1, 2]),) # answer: entries indexed by 0, 1, 2
Es ist auch Einträge in einem Array verwendet werden kann, erhalten, die die Bedingung erfüllen:
>>> a[np.where(a < 8)]
array([5, 6, 7]) # selects from a entries 0, 1, 2
Wenn ein ein 2D-Array ist, np.where()
gibt einen Array von Zeilen idx sind, und eine Reihe von col idx suchen:
>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
[7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))
so dass, wie in 1d Fall können wir np.where()
t verwenden o erhalten Einträge in dem 2D-Array, die die Bedingung erfüllen:
>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2
Array ([9])
Hinweis, wenn a
1d ist, kehrt np.where()
immer noch eine Reihe von Zeilen idx der und einem Array von col idx aber Spalten sind von der Länge 1, so dass letztere leere Array ist.
Bitte genauer gesagt über * was * Sie nicht verstehen. Sicher wollen Sie nicht, dass wir alles aus der Dokumentation wiederholen. – timgeb
Ich weiß nicht, warum Leute mit solchen Fragen beleidigt werden und sie schließen. Aber weiß das, es hat vielen Menschen geholfen. – deadcode