Поддерживает ли numexpr специальные функции Бесселя?

Мне нужно оценить функцию Бесселя примерно в десяти миллионах точек. Я знаю, что scipy.special поддерживает это как scipy.special.kv(n, x), но мне нужна более быстрая оценка, а также оценка с эффективным использованием памяти. В идеале numexpr было бы хорошо, и я пробовал numexpr.evaluate("kv(n, x)"), а также numexpr.evaluate("besselk(n,x)"), но оба не сработали. Кто-нибудь знает точную команду для BesselK в numexpr?


person konstant    schedule 20.05.2018    source источник


Ответы (1)


В документах numexpr перечислены поддерживаемые функции, и, увы, функций Бесселя в нем нет.

http://numexpr.readthedocs.io/projects/NumExpr3/en/latest/user_guide.html

Вы можете попробовать найти альтернативные реализации, например. от GSL или буста, но, честно говоря, я сомневаюсь, что разница в скорости будет нетривиальной, если вообще будет.

Что может быть актуальным, так это избегать циклов по точкам на стороне Python. Либо просто используйте аргументы с массивом для scipy.special.kv, либо перейдите на Cython и используйте версию cython_special с циклом в Cython.

person ev-br    schedule 20.05.2018