l oop из ufun c не поддерживает аргумент 0 типа float, у которого нет вызываемого метода exp - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблемы с оптимизацией, которая раньше работала с предыдущей версией python ...

У меня есть функция fp = lambda c, x: (c[0])+ (c[1]*((1- np.exp(-x/c[4]))/(x/c[4])))+ (c[2]*((((1-np.exp(-x/c[4]))/(x/c[4])))- (np.exp(-x/c[4]))))+ (c[3]*((((1-np.exp(-x/c[5]))/(x/c[5])))- (np.exp(-x/c[5]))))

, и мне нужно минимизировать ошибка e = lambda c, x, y: (((fp(c,x)-y)**2).sum())

с использованием начальных значений параметров p0 = np.array([0.01,0.01,0.01,0.01,0.01,1.00,1.00])

в основном p = optimize.fmin(e, p0, args=(x,y))

, где x и y - np.arrays (14,) каждый.

Итак, раньше это работало, но теперь выдает эту ошибку TypeError: loop of ufunc does not support argument 0 of type float which has no callable exp method

Я провел некоторое исследование, и кажется, что существует проблема, связанная с np.exp() и некоторыми версиями Numpy ... На самом деле эта проблема появилась, когда я обновил Python и Numpy, а также соответственно до 3.7 и 1.18.1.

Есть мысли?

...