irregular slicing/copying in numpy array

765 views Asked by At

Suppose I have an array with 10 elements, e.g. a=np.arange(10). If I want to create another array with the 1st, 3rd, 5th, 7th, 9th, 10th elements of the original array, i.e. b=np.array([0,2,4,6,8,9]), how can I do it efficiently?

thanks

1

There are 1 answers

0
user2357112 On BEST ANSWER
a[[0, 2, 4, 6, 8, 9]]

Index a with a list or array representing the desired indices. (Not 1, 3, 5, 7, 9, 10, because indexing starts from 0.) It's a bit confusing that the indices and the values are the same here, so have a different example:

>>> a = np.array([5, 4, 6, 3, 7, 2, 8, 1, 9, 0])
>>> a[[0, 2, 4, 6, 8, 9]]
array([5, 6, 7, 8, 9, 0])

Note that this creates a copy, not a view. Also, note that this might not generalize to multiple axes the way you expect.