On the indexing order in (numpy) arrays

Robert Kern robert.kern at gmail.com
Thu Oct 9 19:49:21 EDT 2008


Almar Klein wrote:
>  
> 
>     Basically, we want a[i][j] == a[i,j]. Since there is no literal
>     syntax for numpy arrays, we need to be able to convert from a
>     sequence of sequences to an array. The indexing needs to correspond
>     between the two.
> 
> 
> Thanks for the reply. I guess that explains the *why*... 
>  
> 
>     Adopt the numpy order. There are many functions in numpy which take
>     an axis= argument just like this. axis=0 means "y" in the
>     terminology that you are using.
> 
> 
> Yes, I agree its best to use the numpy order, and I agree one gets 
> used to it. However, it will always feel a bit unnatural to reverse the 
> order of dimensions (at least to me it does). And I think it can in 
> some situations lead to confusion.
> 
> I for instance have a class to store sets of points in a nD space. I can 
> index the points, so using points[99,0] selects the *first* dimension of 
> the 99th point. I use this class to store locations of interesting 
> points in 
> 2D and 3D images. But when programming, it can at times be quite confusing
> switching between reversed and "normal" indexing. And sometimes I
> might have a method that does stuff with an image and a point set and
> I want to indicate an axis. What standard should I use then?
> 
> I'm not saying numpy should change the indexing order or something. But 
> other people must run into the same confusing situation at times. How do
> they handle this?  In the example above, I think it'll be weird 
> to change the 
> pointset class such that points[99,0] selects the *last* dimension of 
> point 99. 
> Or is it?

<shrug> It's occasionally annoying, but in my experience, it's just not a big 
deal. And besides, images aren't always oriented the same way, so there's often 
some more coordinate conversion that needs to be done.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list