numpy.where () подробное пошаговое объяснение /примеры [закрыто]

У меня проблемы с пониманием numpy.where(), несмотря на чтение документ , этот пост и этот другой пост .

Может ли кто-нибудь предоставить пошаговые закомментированные примеры с 1D и 2D массивами?

120 голосов | спросил Alexandre Holden Daly 8 Jam1000000amFri, 08 Jan 2016 02:51:25 +030016 2016, 02:51:25

2 ответа


0

Поработав некоторое время, я разобрался с вещами и размещаю их здесь, надеясь, что это поможет другим.

Интуитивно понятно, что np.where - это как " сказать мне, где в этом массиве записи удовлетворяют заданному условию ».

>>> 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

Его также можно использовать для получения записей в массиве, которые удовлетворяют условию:

>>> a[np.where(a < 8)] 
array([5, 6, 7])          # selects from a entries 0, 1, 2

Если a является двумерным массивом, np.where() возвращает массив идентификаторов строк и массив идентификаторов строк:

>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
       [7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))

Так что, как и в случае 1d, мы можем использовать np.where() для получения записей в массиве 2d, которые удовлетворяют условию:

>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2

массив ([9])


Обратите внимание, когда a равно 1d, np.where() по-прежнему возвращает массив строк idx и массив столбцов col, но столбцы имеют длину 1, поэтому последний является пустым массивом.

ответил Alexandre Holden Daly 8 Jam1000000amFri, 08 Jan 2016 03:01:36 +030016 2016, 03:01:36
0

Здесь немного веселее. Я обнаружил, что очень часто NumPy делает именно то, что мне хотелось бы - иногда мне быстрее просто пробовать что-то, чем читать документы. На самом деле смесь обоих лучше.

Я думаю, что ваш ответ в порядке (и вы можете принять его, если хотите). Это просто «лишнее».

import numpy as np

a = np.arange(4,10).reshape(2,3)

wh = np.where(a>7)
gt = a>7
x  = np.where(gt)

print "wh: ", wh
print "gt: ", gt
print "x:  ", x

дает:

wh:  (array([1, 1]), array([1, 2]))
gt:  [[False False False]
      [False  True  True]]
x:   (array([1, 1]), array([1, 2]))

... но:

print "a[wh]: ", a[wh]
print "a[gt]  ", a[gt]
print "a[x]:  ", a[x]

дает:

a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]
ответил uhoh 8 Jam1000000amFri, 08 Jan 2016 11:32:10 +030016 2016, 11:32:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132