我想用索引阵列,像这样更好的方法来使用索引数组来获取元素?
import numpy
a = numpy.arange(6)
ind = [2,3]
现在,a[ind]
给我的第3和第4单元获得numpy
数组的元素,但其实我是想所有其他的a
元素。 有没有一条线/优雅的方式来做到这一点?
我想用索引阵列,像这样更好的方法来使用索引数组来获取元素?
import numpy
a = numpy.arange(6)
ind = [2,3]
现在,a[ind]
给我的第3和第4单元获得numpy
数组的元素,但其实我是想所有其他的a
元素。 有没有一条线/优雅的方式来做到这一点?
没有一个简单的方法,我知道让一组整数索引的补充。布尔指数否定很容易,它可以让你做这样的事情:
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])
但它不是一条线路的解决方案。
也许是这样的:
import numpy
a = numpy.arange(6)
ind = [1,3]
for x in range(6):
if x not in ind: print a[x]
这已经在这里之前的建议,但是这是一个列表的理解,因此一个oneliner:
numpy.array([a[i] for i in range(len(a)) if i not in ind])
结果
array([0, 1, 4, 5])
您可以用'np.ones(a.shape“布尔')'而不是'(a == a)' – 2012-01-05 16:40:45