Я хочу подогнать некоторые данные к гипергеометрической функции. Я использую обобщенную гипергеометрическую функцию, приведенную в mpmath
, hyper
. Пытаюсь преобразовать для работы с curve_fit
с помощью np.frompyfunc
. Когда я делаю
np_hyp = np.frompyfunc(hyper,3,1)
np_hyp([-1/3],[-2/3,2/3],x**2/4)
где x
- некоторый массив numpy. Я получаю ошибку len(a_s): 'float' object has no length
или что-то в этом роде (я буду более точен, когда смогу вернуться к своему компьютеру, чтобы воспроизвести ошибку). Я подозреваю, что это как-то связано с тем, что входные данные являются списками и странным образом конвертируются, когда numpy
пытается преобразовать функцию.
Кто-нибудь знает способ исправить эту ошибку? Любая помощь будет принята с благодарностью.
hyper
вызывается с-1/3
, а не с[-1/3]
. Поскольку функции необходимо определить длину, чтобы получить p и q, она пытается получить длину числа с плавающей запятой -1/3, что вызывает ошибку. Это критично по времени или можно просто написать свою оболочку? Или, может быть,vectorize
может помочь с аргументомexcluded
. - person mikuszefski   schedule 30.03.2021