[Numpy-discussion] Indexing with a list...

David Warde-Farley dwf@cs.toronto....
Sun Aug 9 00:09:25 CDT 2009


On 9-Aug-09, at 12:36 AM, T J wrote:

>>>> z = array([1,2,3,4])
>>>> z[[1]]
> array([1])
>>>> z[(1,)]
> 1
>
> I'm just curious: What is the motivation for this differing behavior?

When you address, i.e. an element in 2D array with a[2,3] you are  
actually indexing z with a tuple object (2,3). The 'comma' operator in  
Python creates a tuple, irrespective of whether you use parens or not.

e.g.

In [192]: z = {}

In [193]: z[2,3] = 5

In [194]: z
Out[194]: {(2, 3): 5}

In the special case of scalar indices they're treated as if they are  
length-1 tuples. The behaviour you're seeing is the same as z[1].

David


More information about the NumPy-Discussion mailing list