On Sat, 2004-03-27 at 23:47, Faheem Mitha wrote:
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]
Yes, you're right, that's an error.
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])
This too looks like an error. Both usages should raise an exception...
and hopefully a prettier one in the future.
Thanks for the questions and feedback.
Regards,
Todd
--
Todd Miller