我想用索引陣列,像這樣更好的方法來使用索引數組來獲取元素?
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