лучший способ использовать массив индекса для получения элементов? - PullRequest
3 голосов
/ 05 января 2012

Я хочу получить элементы массива numpy, используя индексный массив, например,

import numpy 
a = numpy.arange(6)
ind = [2,3]

сейчас, a[ind] дает мне 3-й и 4-й элемент, но я на самом деле хочу все1006 * другие элементы a.Есть ли одна линия / элегантный способ сделать это?

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Я не знаю простого способа получить дополнение набора целых индексов. Отрицание логического индекса легко, что позволяет вам сделать что-то вроде этого:

In [100]: a=np.arange(6)

In [101]: ind=[2,3]

In [102]: cind=(a==a)

In [103]: cind[ind]=False

In [104]: a[cind]
Out[104]: array([0, 1, 4, 5])

Но это не однострочное решение.

1 голос
/ 05 января 2012

Это было предложено здесь ранее, но это понимание списка и, следовательно, единственное:

numpy.array([a[i] for i in range(len(a)) if i not in ind])

результаты в

array([0, 1, 4, 5])
1 голос
/ 05 января 2012

может быть так:

import numpy  
a = numpy.arange(6) 
ind = [1,3]
for x in range(6):
 if x not in ind: print a[x]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...