Python 类型错误:';浮动';对象没有属性'__获取项目';在定义函数中

Python 类型错误:';浮动';对象没有属性'__获取项目';在定义函数中,python,numpy,model,Python,Numpy,Model,我收到了这个错误消息 TypeError:“float”对象没有属性“getitem” 在我之前的模型运行中,相同的策略非常有效, 所以我想不出有什么区别 r = 0.8 K1 = 100 K2 = 50 q = 1 E = r l = 0.5 d = 100. b1 = 0.05 b2 = 0.05 p = 50. c = 300. i = np.arange(0.,1.01,0.01) OUTX = np.zeros(i.shape[0]) def I_test(r

我收到了这个错误消息 TypeError:“float”对象没有属性“getitem” 在我之前的模型运行中,相同的策略非常有效, 所以我想不出有什么区别

r = 0.8 
K1 = 100 
K2 = 50 
q = 1 
E = r 
l = 0.5 
d = 100. 
b1 = 0.05 
b2 = 0.05 
p = 50. 
c = 300. 

i = np.arange(0.,1.01,0.01)
OUTX = np.zeros(i.shape[0])

def I_test(r, K1, K2, E, l, d, b1, b2, p, c, q):
    I= (1/b1*(d-p)) + ((K1- E*q*l/r)* E*q*l + (1/b1)* np.log(p/d)) + ((1-np.exp(-b2*E*q*(1-l)*(K2-E*q*(1-l)/r)/b2))) - c - c*E
    return I

for i in np.arange(0,i.shape[0]):
    I = I_test(r, K1, K2, E[i], l, d, b1, b2, p, c, q)
    OUTX[i]= I[i]

在我看来,最后一行应该是

OUTX[i]= I

对参数值进行分级

我自己找到了解决办法。第一行中的定义不允许我调用参数E,因此我必须从I>E中进行更改。在最后一行中,必须去掉I的索引,然后才能正确地进行计算(如Julien所评论的)


哪里定义了
r、K1、K2、E[i]、l、d、b1、b2、p、c、q
!我在循环的第一行中得到错误I=(1/…您有没有可能接受我的答案,因为它直接解决了原始问题?
E = np.arange(0.,1.0,0.1)
OUTX = np.zeros(E.shape[0])

def I_test(r, K1, K2, E, l, d, b1, b2, p, c, q):
    I= (1/b1*(d-p)) + ((K1- E*q*l/r)* E*q*l + (1/b1)* np.log(p/d)) + ((1-np.exp(-b2*E*q*(1-l)*(K2-E*q*(1-l)/r)/b2))) - c - c*E
    return I

for i in np.arange(0,E.shape[0]):
    I = I_test(r, K1, K2, E[i], l, d, b1, b2, p, c, q)
    OUTX[i]= I