Index Error

inshu chauhan insideshoes at gmail.com
Tue Nov 20 15:26:12 CET 2012


> def GenerateRing(x,y, N): Generates square rings around a point in data
> > which has 300 columns(x) and 3000 rows(y)
> >     indices = []
> >     for i in xrange(-N, N):
> >         indices.append((x+i, y-N))
> >         indices.append((x+N, y+i))
> >         indices.append((x-i, y+N))
> >         indices.append((x-N, y-i))
> >     return indices
> >
> Is it possible that N is greater than either x or y ?  Are negative
> subscripts permissible?
>
> You should consider doing the clipping logic in this function, perhaps
> by passing xlimit and ylimit in as arguments.>
>


Yes N cannot be greater than x and y and it cant be negative too...

>      I need help in this part as I am unable to device a method in
> which if the
> points are out of index,it should stop and
>                         if idx[0] >= 300 and idx[1] >= 3000:           go
> to next centre and start generating rings from there.. and again if the
> index is out of range .. this should repeat

This is where you're trying to clip the values that may be outside of
> the total matrix.
>

Yes I am trying to clip the values here but its not working actually , I
mean not at all working

>
> You do not want "and" in that expression.  The way you've coded it,
> it'll only skip items in which both indices are out of range.  Change it to
>                   if idx[0] >= data.width or idx[1] >= data.height:
>
> and depending on your answer to my earlier query, you may want to also
> check if either subscript is negative.
>
> >                             continue
> >                         else :
> >                             point = data[idx[0], idx[1]]
> >                             if point == (0.0, 0.0, 0.0 ):
> >                                 print point
> >                                 continue
> >                             else:
> >                                 dist = distance(centre, point)
> >                                 print dist
> >                                 if  dist < radius :               and
> rings
> > should be added only when this condition is satisfied
> >                                     print point
> >                                     points.append(point)
> >                                     change = True
> >                                     print change
> >
> >
> >                         break
>
> Why do you want to terminate the loop after only iteration?
>

I dint get your question ??
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20121120/bd439147/attachment.html>


More information about the Python-list mailing list