指数PDF中的错误

时间:2015-03-21 11:31:46

标签: python-2.7 probability-density

我需要完成函数exponentialPDF,但会收到错误:

'IndexError: index 0 is out of bounds for axis 0 with size 0'

该功能如下所示:

def uniformPDF(x,a=0.0,b=4.0):
    p = 1.0/(b-a)*ones((len(x),))
    p[x<a] = 0.0
    p[x>b] = 0.0
    return(p)

def exponentialPDF(x,a=1.0):
"""
Call:
   p = exponentialPDF(x,a)
Input argument:
   vals: float (array)
Output argument:
   p: float (array)
Examples:
   In[1]:  exponentialPDF([1,2],3)
   Out[1]: array([ 0.14936121,  0.03332699])
"""
    p = a * exp(-a*x)
    p[x<0] = 0.0
    return(p)

有人可以帮我解决错误吗?

1 个答案:

答案 0 :(得分:0)

听起来你传递给你的函数的列表是空的。阅读有关python列表的信息,请参阅以下帖子: IndexError: list assignment index out of range

我发现该函数使用numpy数组,例如p = exponentialPDF(np.array([1,2]),3)。希望这有帮助,你应该查看SO homework帖子,然后再问你是否仍然卡住了。

编辑:当你使用numpy时,我会在函数中添加一个显式的转换为numpy数组,如下所示:

def exponentialPDF(x,a=1.0):
    """
    Call:
       p = exponentialPDF(x,a)
    Input argument:
       vals: float (array)
    Output argument:
        p: float (array)
    Examples:
       In[1]:  exponentialPDF([1,2],3)
       Out[1]: array([ 0.14936121,  0.03332699])
    """
    if type(x) is list:
        x = array(x)

    p = a * exp(-a*x)
    p[x<0] = 0.0
    return(p)

希望这可以解决您的问题,您可以根据需要使用该功能(假设从函数返回一个numpy数组是可以的)。