[Numpy-discussion] indexing question

Faheem Mitha faheem at email.unc.edu
Sat Mar 27 20:48:14 CST 2004


On Sat, 27 Mar 2004, Todd Miller wrote:

> On Sat, 2004-03-27 at 19:27, Faheem Mitha wrote:
> > On Sat, 27 Mar 2004, Todd Miller wrote:
> >
> > > Try foo[[0,2]].  Note that the array indexing syntax is a little picky:
> > > foo[(0,2)] (tuple index) won't work,  just foo[[0,2]] (list index) or
> > > foo[array([0,2])] (array index).
> >
> > Thanks. I see this extracts the relevant rows. How about columns?
>
> I think for columns you need to transpose the matrix or use take() with
> the right axis=1.

I see. Thanks. I think that take() does what I need. BTW, this
documentation example for take looks wrong, and gives an error for me.

*************************************************
>>> a1 = array([10,20,30,40])
>>> print a1[[3,5]]
[40 60]
>>> print take(a1,[3,5])
[40 60]
**************************************************

I get

>>> a1 = numarray.array([10,20,30,40])
>>> a1
array([10, 20, 30, 40])
>>> numarray.take(a1,[3,5])
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 1776, in
take
    return array._take((indices,), outarr=outarr, clipmode=clipmode)
  File "/usr/lib/python2.3/site-packages/numarray/numarraycore.py", line
498, in _take
    return ufunc._take(self, indices, **keywds)
  File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 1579, in
__call__
    result = self._doit(computation_mode, woutarr, cfunc, ufargs, 0)
  File "/usr/lib/python2.3/site-packages/numarray/ufunc.py", line 1551, in
_doit
    apply(cfunc, ufargs)
IndexError: Index[1,0]=5 out of range[4]

>>> a1[[3,5]]
array([40, 40])

                                                               Faheem.




More information about the Numpy-discussion mailing list