指数 PDF 中的错误

Error in exponential PDF

我需要完成功能 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)

谁能帮我解决这个错误?

听起来您传递给函数的列表是空的。阅读 python 列表并查看以下内容 post: IndexError: list assignment index out of range

我发现该函数可以使用 numpy 数组,例如p = exponentialPDF(np.array([1,2]),3).希望这对您有所帮助,您应该查看 SO homework post 并再次询问您是否仍然卡住。

编辑:当你使用 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 数组没问题)。