IndexError:只有整数,切片(`:`),省略号(`...`)才是有效的索引

时间:2017-07-20 03:58:08

标签: python numpy

我试图定义以下功能,但我认为我在某处犯了错误 -

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

有谁知道可能导致它的原因?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用的是Python 3,那么

document.on(ready)

将是一个浮点数,它不是一个有效的索引。尝试将其强制转换为 mkeep=r/keep ,或者只使用int强制进行整数除法。