Spec-Zone.ru › NumPy 1.11

numpy.digitize

numpy.digitize(x, bins, right=False)

Возвращает индексы ячеек, к которым принадлежит каждое значение в входном массиве.

Каждый индекс i возвращается так, что bins[i-1] <= x < bins[i] если bins монотонно возрастает, или bins[i-1] > x >= bins[i] если bins монотонно убывает. Если значения в x выходят за пределы bins, возвращается 0 или len(bins), соответственно. Если right равно True, то правая ячейка закрыта, так что индекс i такой, что bins[i-1] < x <= bins[i] или bins[i-1] >= x > bins[i]`` если bins монотонно возрастает или убывает, соответственно.

Параметры:

x : array_like

Входной массив для распределения по ячейкам. До NumPy 1.10.0 этот массив должен был быть одномерным, но теперь может иметь любую форму.

bins : array_like

Массив ячеек. Он должен быть одномерным и монотонным.

right : bool, необязательно

Указывает, включают ли интервалы правый или левый край ячейки. По умолчанию (right==False) интервал не включает правый край. Левый край ячейки в этом случае открыт, т.е. bins[i-1] <= x < bins[i] — это поведение по умолчанию для монотонно возрастающих ячеек.

Возвращает:

out : ndarray целых чисел

Выходной массив индексов, имеющий ту же форму, что и x.

Возможные исключения:

ValueError

Если bins не монотонный.

TypeError

Если тип входных данных — комплексное число.

См. также

bincount, histogram, unique

Примечания

Если значения в x такие, что они выходят за пределы диапазона ячеек, попытка индексировать bins с индексами, которые digitize возвращает, приведет к IndexError.

Введено в версии 1.10.0.

np.digitize реализовано на основе np.searchsorted. Это означает, что для распределения значений используется двоичный поиск, который масштабируется гораздо лучше для большего числа ячеек, чем предыдущий линейный поиск. Он также снимает требование к входному массиву быть одномерным.

Примеры

>>> x = np.array([0.2, 6.4, 3.0, 1.6])
>>> bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
>>> inds = np.digitize(x, bins)
>>> inds
array([1, 4, 3, 2])
>>> for n in range(x.size):
...   print(bins[inds[n]-1], "<=", x[n], "<", bins[inds[n]])
...
0.0 <= 0.2 < 1.0
4.0 <= 6.4 < 10.0
2.5 <= 3.0 < 4.0
1.0 <= 1.6 < 2.5
>>> x = np.array([1.2, 10.0, 12.4, 15.5, 20.])
>>> bins = np.array([0, 5, 10, 15, 20])
>>> np.digitize(x,bins,right=True)
array([1, 2, 3, 4, 4])
>>> np.digitize(x,bins,right=False)
array([1, 3, 3, 4, 5])

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.digitize.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API