Ошибка типа: только массивы размера 1 могут быть преобразованы в скаляры Python + Решение - PullRequest
0 голосов
/ 31 января 2019

Согласно документации Python ошибка TypeError определяется как

Возникает, когда операция или функция применяется к объекту неподходящего типа.Связанное значение представляет собой строку, содержащую сведения о несоответствии типов. исключение 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 *** м ** пи сигма 2))) * +1016 * (** м .exp ((- (х-му) 2) / 2 * sigma 2)) Обратите внимание на m.- Это неверно, потому что математика.можно обрабатывать только скаляры.И ошибка говорит, что произошла TypeError .нп.(Numpy) может работать как со скейлерами, так и с массивами, и проблема решена.

1 Ответ

0 голосов
/ 31 января 2019

Правильный код выглядит так:

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

ThisПроизошла ошибка в Spyder IDE.

...