Right! I just thought there would/should be a "digitize" function that did
this.

El vie, 18 dic 2020 a las 14:16, Joseph Fox-Rabinovitz (<
jfoxrabinov...@gmail.com>) escribió:

> Bin index is just value floor divided by the bin size.
>
> On Fri, Dec 18, 2020, 09:59 Martín Chalela <tinchochal...@gmail.com>
> wrote:
>
>> Hi all! I was wondering if there is a way around to using np.digitize
>> when dealing with equidistant bins. For example:
>> bins = np.linspace(0, 1, 20)
>>
>> The main problem I encountered is that digitize calls np.searchsorted.
>> This is the correct way, I think, for generic bins, i.e. bins that have
>> different widths. However, in the special, but not uncommon, case of
>> equidistant bins, the searchsorted call can be very expensive and
>> unnecessary. One can perform a simple calculation like the following:
>>
>> def digitize_eqbins(x, bins):
>> """
>> Return the indices of the bins to which each value in input array belongs
>> .
>> Assumes equidistant bins.
>> """
>> nbins = len(bins) - 1
>> digit = (nbins * (x - bins[0]) / (bins[-1] - bins[0])).astype(np.int)
>> return digit + 1
>>
>> Is there a better way of computing this for equidistant bins?
>>
>> Thank you!
>> Martin.
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion@python.org
>> https://mail.python.org/mailman/listinfo/numpy-discussion
>>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to