numpy.digitize(x,bins,right=False)¶Return the indices of the bins to which each value in input array belongs.
Each indexi returned is such thatbins[i-1]<=x<bins[i] ifbins is monotonically increasing, orbins[i-1]>x>=bins[i] ifbins is monotonically decreasing. If values inx are beyond thebounds ofbins, 0 orlen(bins) is returned as appropriate. If rightis True, then the right bin is closed so that the indexi is suchthatbins[i-1]<x<=bins[i] orbins[i-1]>=x>bins[i] ifbinsis monotonically increasing or decreasing, respectively.
| Parameters: | x : array_like
bins : array_like
right : bool, optional
|
|---|---|
| Returns: | out : ndarray of ints
|
| Raises: | ValueError
TypeError
|
See also
Notes
If values inx are such that they fall outside the bin range,attempting to indexbins with the indices thatdigitize returnswill result in an IndexError.
New in version 1.10.0.
np.digitize is implemented in terms ofnp.searchsorted. This meansthat a binary search is used to bin the values, which scales much betterfor larger number of bins than the previous linear search. It also removesthe requirement for the input array to be 1-dimensional.
Examples
>>>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)>>>indsarray([1, 4, 3, 2])>>>forninrange(x.size):...print(bins[inds[n]-1],"<=",x[n],"<",bins[inds[n]])...0.0 <= 0.2 < 1.04.0 <= 6.4 < 10.02.5 <= 3.0 < 4.01.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])