Python 由于阵列中存在问题,此代码未运行
基本上,代码给出了错误:Python 由于阵列中存在问题,此代码未运行,python,python-3.x,numpy,Python,Python 3.x,Numpy,基本上,代码给出了错误: TypeError: only size-1 arrays can be converted to Python scalars 分两行 我寻找其他函数来处理数组,但没有任何效果 pulse = np.array((-1/(math.sqrt(2*pi)/(dev **3))) * term) pulse = pulse*np.array(math.exp((-0.500/dev**2)*term ** 2)) # the error happens here 因
TypeError: only size-1 arrays can be converted to Python scalars
分两行
我寻找其他函数来处理数组,但没有任何效果
pulse = np.array((-1/(math.sqrt(2*pi)/(dev **3))) * term)
pulse = pulse*np.array(math.exp((-0.500/dev**2)*term ** 2)) # the error happens here
因为表达式:math.exp((-0.500/dev**2)*term**2)
如注释中所述,数学函数
math.exp
处理标量数,因此当您将数组传递给它们时,它们将失败。您可能希望使用numpy等效函数
一般来说,numpy足够全面,不需要使用任何数学函数。请参阅下面的代码,其中定义了简单数组,以及numpy和math中两个exp函数的行为:
导入数学
将numpy作为np导入
a1=np.数组([1,2,3])
ea1=np.exp(a1)
ea2=数学表达式(a1)
在上面的代码中使用np.exp
时,您将得到一个数组:
阵列([2.71828183,7.3890561,20.08553692])
在上面的代码中使用math.exp
时,将出现以下错误:
TypeError:只有大小为1的数组才能转换为Python标量
因此,当您使用numpy函数时,代码将正常工作,如下所示:
pulse=-1/(np.sqrt(2*pi)/(dev**3))*项
脉冲=脉冲*np.exp(-0.500/dev**2)*项**2)
频谱=w*np.exp(-1*w*平均值)*np.exp(-1*w**2*(开发**2/2))
请发布整个程序。在你给我们看整个程序之前,我们不知道到底出了什么问题。该错误通常是因为您试图使用一个函数,该函数用于dev
和term
阵列上的单个数字?你能创建一个吗?math.exp
只适用于标量和单个数字。如果向其传递一个具有多个值的数组,则会出现此错误np.exp
将使用数组输入。
spectrum = w*math.exp(-1*w*mean)*math.exp(-1 * w ** 2 * (dev ** 2 / 2)) # here the same error