> > > Little correction, only c[(2,3)] gives me what I expect, not c[[2,3]], > which > > is even stranger. > > c[(2,3)] is the same as c[2,3] and obviously works as you expected.
Well, this is not indicated in the documentation. c[[2,3]] is refered to as 'advanced indexing' in the numpy book. > It will return elements 2 and 3 along the first dimension. To get what you > want, you need to put it like this: > > c[[2],[3]] > > In [118]: c = N.arange(0.,3*4*5).reshape((3,4,5)) > > In [119]: c[[2],[3]] > > Out[119]: array([[ 55., 56., 57., 58., 59.]]) This is very strange to say the least, as tuple do not work in the same way. This does not work however using a ndarray holding the indices. > > In [120]: ind = N.array([[2],[3]]) > > In [121]: c[ind] > > --------------------------------------------------------------------------- > <type 'exceptions.IndexError'> Traceback (most recent call > last) > > /media/hda6/home/ck/<ipython console> in <module>() > > <type 'exceptions.IndexError'>: index (3) out of range (0<=index<=2) in > dimension 0 > > so you have to convert it to a list before: > > In [122]: c[ind.tolist()] > Out[122]: array([[ 55., 56., 57., 58., 59.]]) But if I have the coordinates of the points in an array, I have to reshape it and then convert it into a list. Or convert it into a list and then convert it to a tuple. I know that advanced indexing is useful, but here it is not coherent. tuples and lists should have the same result on the array, or at least it should be documented. So there is not way to get a sub-array based on coordinates in an array ? Matthieu -- French PhD student Website : http://miles.developpez.com/ Blogs : http://matt.eifelle.com and http://blog.developpez.com/?blog=92
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion