RuntimeWarning:绘制泊松分布时在电源中遇到的无效值

时间:2016-06-11 13:05:29

标签: python matplotlib runtime

我想运行这段代码

CusineTypeCell *cell = (CusineTypeCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CusineTypeCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}


    [cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkbozempty"] forState:UIControlStateNormal];
    [cell.userSelectedCusine setBackgroundImage:[UIImage imageNamed:@"checkboxselect"] forState:UIControlStateSelected];
    [cell.userSelectedCusine addTarget:self action:@selector(checkboxSelected:) forControlEvents:UIControlEventTouchUpInside];
      cell.cusineName.text = [self.cusineFilterData objectAtIndex:indexPath.row];
    return cell;

其中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

1 个答案:

答案 0 :(得分: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