numpy.where#
- numpy.где(условие, [x, y, ]/)#
Возвращает элементы, выбранные из x или y в зависимости от условие.
Примечание
Когда только условие предоставлен, эта функция является сокращением для
np.asarray(condition).nonzero(). Использованиеnonzeroнапрямую следует предпочитать, так как он корректно работает для подклассов. Остальная часть этой документации охватывает только случай, когда все три аргумента предоставлены.- Параметры:
- условиеarray_like, bool
Где True, выдать x, в противном случае выдает y.
- x, yarray_like
Значения, из которых выбирать. x, y и условие должны быть транслируемы к некоторой форме.
- Возвращает:
- выходndarray
Массив с элементами из x где условие равно True, и элементы из y в другом месте.
Примечания
Если все массивы одномерные,
whereэквивалентно:[xv if c else yv for c, xv, yv in zip(condition, x, y)]
Примеры
>>> import numpy as np >>> 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 и условия транслируются вместе:
>>> x, y = np.ogrid[:3, :4] >>> np.where(x < y, x, 10 + y) # both x and 10+y are broadcast 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 is broadcast array([[ 0, 1, 2], [ 0, 2, -1], [ 0, 3, -1]])