假设我有一个类似的数组:
foo = np.random.rand(2, 5)
,我得到了像[:, [2, 4]]
这样的切片。我想做的是有效地将切片从数组中删除,因此基本上让我有了:
foo[:, [0, 1, 3]]
此处foo
可以是任意秩张量,每个维度中的切片可以是:
或一系列非重复的正索引。是否有一种无需使用np.delete
和复杂(慢速)循环的有效方法?
答案 0 :(得分:2)
给出要删除的列索引的输入列表,您可以从所有索引的列表中删除这些元素。
更简单,您可以利用set.difference
删除必要的列:
foo[:, sorted(set(range(foo.shape[1])) - set([2, 4]))]
要选择特定的行或列,您无需使用numpy.delete
。如您所见,使用NumPy效率不高。