0

我正在编写一个代码来进行一些集成。但我被困在某个点(最后两行)。正如它所说的索引错误:索引超出范围。我想做的是 - 每次 r 有一个值时,它应该以 1 的增量写入空的对应索引,以便它可以跟踪它。任何帮助,将不胜感激。这是代码-

from pylab import*
from math import*

dx = 981
dy = 1043
bx = 534.4
by = 109.5

index = zeros(shape=(1,dx+dy))
r=0
r_max=0

for i in xrange(1,dy+1):
    for j in xrange (1,dx+1):
        if i-by > 0:
            theta = 180*atan(abs(j-bx)/(i-by))/pi
            if theta<10:
                r = round(sqrt((j-bx)**2+(i-by)**2))
                if r>0:
                    index[r]+=1
4

1 回答 1

2

当你index = zeros(shape=(1,dx+dy))创建一个二维数组时,第一个轴的大小为 1。当你index[r]+=1访问数组的第一个轴时,索引r可以大于 1。

所以看起来你想要的是摆脱第一个“无用”维度,通过做

index = zeros(shape=(dx+dy))

或者,索引第二个轴:

index[0, r]+=1

或者,

index[:, r]+=1
于 2013-04-12T08:02:43.243 回答