[Matrix-SIG] QUERY: Array indexing

Perry Stoll pas@scansoft.com
Wed, 10 Mar 1999 18:29:17 -0800

Assuming you are using NumPy, the function you want is Numeric.take().


And from the incomparable Tim Peters, here's a lesson on gather/scatter in
general (sorry if this link gets broken up across two lines):


which yields the following functions:

def gather(seq, indices):
    from operator import __getitem__
    return map(__getitem__, (seq,)*len(indices), indices)

def scatter(seq, indices,vals):
    from operator import __setitem__
    return map(__setitem__, (seq,)*len(indices), indices,vals)


-----Original Message-----
From: Janne Sinkkonen <janne@avocado.pc.helsinki.fi>
To: Stuart Feerick <smf26@cus.cam.ac.uk>
Cc: matrix-sig@python.org <matrix-sig@python.org>
Date: Wednesday, March 10, 1999 12:48 PM
Subject: Re: [Matrix-SIG] QUERY: Array indexing

>Stuart Feerick <smf26@cus.cam.ac.uk> writes:
>> I have an index of values, i=[1,2,3], and need to access element
>> [1,2,3] of the array, a=array([3,3,3]). How do I do this going through i?
>As far as I understand what you want, you can just write a[i]=5, for
>example, or z=a[i]. the variable i may be a sequence of indexes:
>for i in transpose(reshape(indices(a.shape),(len(a.shape),-1))): a[i]=1