On 9/8/10 3:27 PM, Terry Reedy wrote:
On 9/8/2010 2:55 PM, Jonno wrote:
I know that I can index into a list of lists like this:
a=[[1,2,3],[4,5,6],[7,8,9]]
a[0][2]=3
a[2][0]=7

but when I try to use fancy indexing to select the first item in each
list I get:
a[0][:]=[1,2,3]
a[:][0]=[1,2,3]

Why is this and is there a way to select [1,4,7]?

You are trying to look at a list of lists as an array and have discovered where
the asymmetry of the former makes the two non-equivalent. To slice
multi-dimensional arrays any which way, you need an appropriate package, such as
numpy.

A motivating example:

[~]
|1> import numpy

[~]
|2> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])

[~]
|3> a

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

[~]
|4> a[0,2]
3

[~]
|5> a[2,0]
7

[~]
|6> a[0,:]
array([1, 2, 3])

[~]
|7> a[:,0]
array([1, 4, 7])


--
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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to