更好的方法来使用索引数组来获取元素?

时间:2012-01-05 11:07:12

标签: python numpy

我想使用像这样的索引数组获取numpy数组的元素

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

现在,a[ind]为我提供了第3和第4个元素,但实际上我想要a的所有其他元素。 是否有一条线/优雅的方式来做到这一点?

3 个答案:

答案 0 :(得分:4)

我知道没有一种简单的方法来获得一组整数索引的补充。布尔索引否定很容易,这可以让你做这样的事情:

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 :(得分:1)

也许是这样的:

import numpy  
a = numpy.arange(6) 
ind = [1,3]
for x in range(6):
 if x not in ind: print a[x]

答案 2 :(得分:1)

之前已经在这里提出过,但这是一个列表理解,因此是一个oneliner:

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

结果

array([0, 1, 4, 5])