bincount в Numpypy

У меня есть проект, который сильно использует функцию Numpy функции bincount . Теперь я хотел бы использовать pypy для увеличения производительности. К сожалению, как указано на странице состояния numpypy, поддержка функции bincount по-прежнему отсутствует.

Поэтому мои вопросы:

  1. Есть ли альтернативная функция, такая же быстро, как и bincount, которая может быть реализована с помощью numpypy? Я смотрю на гистограмму, но она слишком медленная, и я думаю, что использование ее приведет к победе в преимуществах использования pypy. Вот доказательство:

    Numpy

    timeit.timeit("np.bincount(x)", setup="import numpy as np; x = np.array([0] * 20 + [1] * 30)") 0.8197031021118164 

    Numpypy

     timeit.timeit("np.histogram(x)", setup="import numpy as np; x = np.array([0] * 20 + [1] * 30)") 12.335555076599121 
  2. Я с радостью вижу, что разработка numpypy очень активна. Итак, как мой срок для проекта в течение месяца, есть ли шансы на то, что бинация будет реализована в течение такой даты?

Вы можете реализовать bincount, выполнив что-то вроде:

 def bincount(x): result = np.zeros(x.max() + 1, int) for i in x: result[i] += 1 

Вам нужно будет профилировать его, чтобы точно знать, но из-за компилятора pythy jit это должно быть очень быстро, даже если это не так быстро, как чистая реализация c. Если вы попробуете, я хотел бы знать, как это происходит.