我需要完成函数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)
有人可以帮我解决错误吗?
答案 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数组是可以的)。