On Mon, Feb 7, 2011 at 7:21 AM, Fred <fredmfp@gmail.com> wrote:

Hi all,

Let's say C1 is a 3D array, and q0 and k are 2D array.

dim C1 = nx*ny*nz

dim q0 = nx*ny = dim k

I have to do the following:

q0[0, 0] = C1[0, 0, k[0, 0]] q0[1, 1] = C1[1, 1, k[1, 1]] ... q0[i, j] = C1[i, j, k[i, j]] ...

I tried

q0 = C1[:, :, k]

but this obviously does not work.

you need to build or broadcast the indices, something like this (written, not tried out) n0, n1 = k.shape ind0 = np.arange(n0)[:,None] ind1 = np.arange(n1) q0 = C1[ind0,ind1, k[ind0,ind1]] or better q0 = C1[ind0,ind1, k] Josef

How could I do this ala NumPy?

TIA

Cheers,

-- Fred _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion