2016-06-11 1 views
2

Я хочу, чтобы запустить этот кусок кодаRuntimeWarning: недопустимое значение встречается в мощности при построении распределения Пуассона

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.misc import factorial 

def poisson(k, lamb): 
    return (lamb**k/factorial(k)) * np.exp(-lamb) 

x_plot = np.linspace(0, 10, 100) 
plt.plot(x_plot, poisson(x_plot, parameters), 'r-', lw=2) 
plt.show() 

, в котором parameters = 0.00213553

Но каждый раз, когда это появляется предупреждение:

RuntimeWarning: invalid value encountered in power 
return (lamb**k/factorial(k)) * np.exp(-lamb) 

и появляется только горизонтальная линия.

Я проверил подобные проблемы, но они действительно не помогли. Я также попытался отбросить возвращаемое значение функции до float128, которое тоже не работает. (с использованием Python 2.7.6 64-bit)

+0

Гадание слепо без определения факториала() предусмотрен и код пропускает операторы импорта, отступы неверны и т.д., но доверяя ошибку, я хотел бы попытаться посмотреть на частичные результаты, кандидаты для намеченной власти могут быть аргументом оператора '**' или аргумента '-lamb' в np.exp() ... – Dilettant

ответ

2

Я действительно не знаю, какой из factorial вы используете. Но когда я использую math.factorial, код не может работать. Затем я попытался с scipy.misc.factorial, который действительно может принимать numpy array в качестве входных данных. И когда я запускаю следующее, это не дает мне никакой ошибки или предупреждения.

import numpy as np 
import matplotlib.pyplot as plt 
import scipy.misc 

parameters = 0.00213553 

def poisson(k, lamb): 
    return (lamb**k/scipy.misc.factorial(k)) * np.exp(-lamb) 

x_plot = np.linspace(0, 10, 100) 
plt.plot(x_plot, poisson(x_plot, parameters), 'r-', lw=2) 
plt.show() 

enter image description here

+1

Я отредактировал свой вопрос и добавлю полный код. да, я использовал факториал в scipy.misc, но он не показывает правильный график. @ MaThMax –

+1

@ Shi.Bi, можете ли вы попытаться разбить свою линию на разные части, например (lamb ** k', 'scipy.misc. factorial (k) ',' np.exp (-lamb) ', см., какая часть на самом деле вызывает проблему? И если это просто« RuntimeWarning », но не ошибка, почему вы не видите правильный график? показать полный список «Предупреждений», которые вы видите? – MaThMaX

+0

Я наконец понял это. thankyou :) Мне пришлось настраивать plt.xlim и plt.ylim, чтобы увидеть результат. @ MaThMaX –

 Смежные вопросы

  • Нет связанных вопросов^_^