Насколько я понимаю, векторизованные функции numpy работают быстрее, чем циклы Python, потому что циклы выполняются на C или Fortran. Я хотел бы знать, где в исходном коде это происходит.
Например, биномиальная функция CDF scipy.special.bdtr
принимает аргументы, подобные массиву k,n,p
, и возвращает ndarray, если аргументы являются транслируемыми. В документации говорится, что scipy.special.bdtr
- это оболочка для подпрограммы в библиотеке математических функций Cephes. Копаясь в исходном коде на Github, я нашел файл scipy/special/cephes/bdtr.c
, содержащий код C для этой подпрограммы; вот что я считаю первыми тремя строками соответствующей функции C:
двойной BDTR (K, N, P)
int k, n;
двойной р;
Похоже, что основная функция C не работает с массивами, и я не могу найти исходный код, где эта функция преобразуется в функцию Python, которая работает с массивами.