Как отмечается в комментариях, математические функции math.exp
работают со скалярными числами, поэтому, когда вы передаете им массивы, они не будут работать.Возможно, вы захотите использовать numy эквивалентные функции.
В общем, numpy достаточно всеобъемлющий, чтобы исключить необходимость использования любой математической функции.См. Код ниже, где определяется простой массив и как ведет себя каждая из двух exp функций в numpy и math :
import math
import numpy as np
a1 = np.array([1,2,3])
ea1 = np.exp(a1)
ea2 = math.exp(a1)
При использовании np.exp
в приведенном выше коде вы получите массив:
array ([2.71828183, 7.3890561, 20.08553692])
При использовании math.exp
вВ приведенном выше коде вы получите следующую ошибку:
TypeError: в скаляры Python могут быть преобразованы только массивы размера 1
Итак, ваш код будет работать при использованииNumpy функции, как показано ниже:
pulse = -1/(np.sqrt(2*pi)/(dev **3)) * term
pulse = pulse * np.exp((-0.500/dev**2)*term ** 2)
spectrum = w * np.exp(-1*w*mean) * np.exp(-1 * w ** 2 * (dev ** 2 / 2))