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