2015-06-15 3 views
0

Предположим, у меня есть массив с 10 элементами, например. a=np.arange(10). Если я хочу создать еще один массив с 1-м, 3-м, 5-м, 7-м, 9-м, 10-м элементами исходного массива, то есть b=np.array([0,2,4,6,8,9]), как я могу сделать это эффективно?нерегулярное нарезка/копирование в массиве numpy

благодаря

+0

Индексирование таким образом не может быть столь же эффективным, как «срез»; но тогда вы, похоже, довольны «другим массивом», копией, а не другим способом взглянуть на оригинал. – hpaulj

ответ

1
a[[0, 2, 4, 6, 8, 9]] 

Index a со списком или массив, представляющий желаемые показатели. (Не 1, 3, 5, 7, 9, 10, так как индексация начинается с 0.) Это немного сбивает с толку, что индексы и значения одинаковы здесь, так что есть другой пример:

>>> 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]) 

Обратите внимание, что это создает копию, а не вид. Also, note that this might not generalize to multiple axes the way you expect.

Смежные вопросы