TypeError:只有大小为1的数组可以转换为Python标量+解决方案

时间:2019-01-31 03:17:01

标签: python python-3.x numpy anaconda spyder

根据Python文档,将TypeError定义为

  

在将操作或功能应用于不合适类型的对象时引发。关联值是一个字符串,提供有关类型不匹配的详细信息。   exception TypeError

出现此错误的原因是因为我的代码如下所示:

import math as m
import pylab as pyl
import numpy as np

#normal distribution function
def normal(x,mu,sigma):
    P=(1/(m.sqrt(2*m.pi*sigma**2)))*(m.exp((-(x-mu)**2)/2*sigma**2))
    return P

#solution
x = np.linspace(-5,5,1000)
P = normal(x,0,1)
#plotting the function
pyl.plot(x,P)
pyl.show()

P =(1 /( m .sqrt(2 *** m **。pi sigma 2))) (** m .exp((-(x-mu) 2)/ 2 * sigma 2)) 注意m。 -这是不正确的,因为数学。只能处理标量。并且该错误表示发生了 TypeError 。 np。 (Numpy)可以处理缩放器和数组,并且问题得以解决。

1 个答案:

答案 0 :(得分:0)

正确的代码如下:

import math as m
import pylab as pyl
import numpy as np

#normal distribution function
def normal(x,mu,sigma):
    P=(1/(np.sqrt(2*np.pi*sigma**2)))*(np.exp((-(x-mu)**2)/2*sigma**2))
    return P

#solution
x = np.linspace(-5,5,1000)
P = normal(x,0,1)
#plotting the function
pyl.plot(x,P)
ply.show()

最后,我们得到了一个很好的正态分布函数,如下所示: normaldistribution

此错误发生在Spyder IDE中。