问题
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:
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.
来源:https://stackoverflow.com/questions/30856133/irregular-slicing-copying-in-numpy-array