2

I have an array of index tuples and I would like to use it to pick out values from a multidimensional numpy array,

import numpy
a = numpy.random.rand(10, 10, 10)
idx = [[1, 1, 2], [0, 3, 7], [9, 8, 4], [9, 9, 9]]

The comprehension [a[i, j, k] for i, j, k in idx] only worked if a.ndim was known.

Any hints?

2
  • 1
    By the way, len(a.shape) is acessible via a.ndim Commented Feb 27, 2017 at 10:25
  • Cool, never knew about that. Commented Feb 27, 2017 at 10:25

1 Answer 1

8

You could convert the transposed version of idx to a tuple and then index for a vectorized solution -

a[tuple(np.transpose(idx))]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.