在Numpy中否定切片?

时间:2018-07-03 08:44:45

标签: python numpy

假设我有一个类似的数组:

foo = np.random.rand(2, 5)

,我得到了像[:, [2, 4]]这样的切片。我想做的是有效地将切片从数组中删除,因此基本上让我有了:

foo[:, [0, 1, 3]]

此处foo可以是任意秩张量,每个维度中的切片可以是:或一系列非重复的正索引。是否有一种无需使用np.delete和复杂(慢速)循环的有效方法?

1 个答案:

答案 0 :(得分:2)

给出要删除的列索引的输入列表,您可以从所有索引的列表中删除这些元素。

更简单,您可以利用set.difference删除必要的列:

foo[:, sorted(set(range(foo.shape[1])) - set([2, 4]))]

要选择特定的行或列,您无需使用numpy.delete。如您所见,使用NumPy效率不高。