numpy.where(condition[, x, y])

Возвращать элементы, выбранные из x или y в зависимости от состояния.

Примечание

В момент, когда задано только условие, эта ёмкость является сокращением для np.asarray(condition).nonzero(). Прямое использование ненулевого параметра должно понравиться, так как оно эффективно для подклассов. Остальная часть этой документации описывает только ситуацию, в которой приводится каждое из трех условий.

Параметры:

условие : array_like, bool

Там, где Правда, уступите х, иначе уступите у.

x, y : array_like

Значения, из которых следует выбирать. x, y и состояние должны быть транслируемыми в определенной форме.

Возвращается:

андаррей

Массив с элементами из x, где условие True, и элементами из y в другом месте.

Примечания

Если все массивы 1-D, где эквивалентны:

[xv if c else yv]

 для c, xv, yv в застежке-молнии (условие, x, y)]

Примеры

>>> 

>>> a = np.arange(10)

>>> a

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.where(a < 5, a, 10*a)

array([ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90])

Это можно использовать и на многомерных массивах:

>>> 

>>> np.where([[True, False], [True, True]],

…          [[1, 2], [3, 4]],

…          [[9, 8], [7, 6]])

array([[1, 8],

       [3, 4]])

Формы х, у и состояние транслируются вместе:

>>> 

>>> x, y = np.ogrid[:3, :4]

>>> np.where(x < y, x, 10 + y) # оба x и 10+y транслируются.

array([[10, 0, 0, 0],

       [10, 11,  1, 1],

       [10, 11, 12,  2]])

>>> 

>>> a = np.array([[0, 1, 2],

…               [0, 2, 4],

…               [0, 3, 6]])

>>> np.where(a < 4, a, -1) # -1 транслируется

array([[ 0, 1, 2],

       [ 0,  2, -1],

       [ 0,  3, -1]])