Вдохновленный этим вопросом по питону вы должны быть в состоянии определить небольшую функцию, которая доставит желаемое отображение (по модулю соглашений):
binindices(edges, data) = searchsortedlast.(Ref(edges), data)
Обратите внимание, что края корзины сортируются имы можем использовать seachsortedlast
, чтобы получить последний край бина, меньший или равный точке данных.Передавая это по всем данным, мы получаем отображение.Обратите внимание, что Ref(edges)
указывает, что edges
является скаляром при широковещании (это означает, что полный массив учитывается при каждом вызове).
Хотя этот подход концептуально идентичен вашему решению, этот подход примерно в 13 раз быстреемоя машина.
Я подал проблему на StatsBase.jl's github page , предлагая добавить это как функцию.