2017-07-20 20 views
0

我试图定义以下功能,但我认为我在某处发生错误 -IndexError:只有整数,切片(`:`),省略号(`...`)是有效索引

import numpy as np 
import math 

def banana(A,B,C1,C2,N,keep,init): 

R = init*keep + N*keep 
x1=x2=0 
bimat = np.zeros((N,2)) 
for r in range(1,R+1): 
    x1=np.random.normal((B*x2+C1)/(A*(x2**2)+1),math.sqrt(1/(A*(x2**2)+1))) 
    x2=np.random.normal((B*x1+C2)/(A*(x1**2)+1),math.sqrt(1/(A*(x1**2)+1))) 
    if (r>init*keep and r%keep==0): 
     mkeep=r/keep 
     bimat[mkeep-init,:]=np.array([x1, x2]) 

return(bimat) 

当我通过一些值的功能,例如 -

banana(0.5,0,3,3,1000,10,10) 

我碰到下面的错误 -

IndexError        Traceback (most recent call last) 
<ipython-input-288-9d3d5702a1a0> in <module>() 
----> 1 banana(0.5,0,3,3,1000,10,10) 

<ipython-input-287-ac0004b13e9f> in banana(A, B, C1, C2, N, keep, init) 
     9   if (r>init*keep and r%keep==0): 
    10    mkeep=r/keep 
---> 11    bimat[mkeep-init,:]=np.array([x1, x2]) 
    12 
    13  return(bimat) 

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis 
(`None`) and integer or boolean arrays are valid indices 

有谁知道什么migh不会造成它?

谢谢!

回答

1

如果您正在使用Python 3,然后

mkeep=r/keep 

会有浮动,这不是一个有效的索引。尝试将其转换为int或仅使用mkeep=r//keep强制整数除法。

相关问题