删除特定列以外的维的所有列

时间:2018-02-21 06:15:02

标签: python numpy

我想创建一个带有n维数组,维度和列索引的函数,并在删除该特定维度的所有其他列后返回(n-1)维数组。

以下是我现在使用的代码

a = np.arange(6).reshape((2, 3))  # the n-dimensional array
axisApplied = 1
colToKeep = 0
colsToDelete = np.delete(np.arange(a.shape[axisApplied]), colToKeep)
a = np.squeeze(np.delete(a, colsToDelete, axisApplied), axis=axisApplied)
print(a)
# [0, 3]

请注意,我必须手动计算n-1索引(特定列索引的补码)以使用np.delete(),我想知道是否有更方便的方法来实现我的目标,例如:指定要直接保留的列。

感谢您的阅读,欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

1,296 (16 direct, 1,280 indirect) bytes in 1 blocks are definitely lost in loss record 34 of 42

简单索引:

In [1]: arr = np.arange(6).reshape(2,3)
In [2]: arr
Out[2]: 
array([[0, 1, 2],
       [3, 4, 5]])

或者,如果您需要使用常规In [3]: arr[:,0] Out[3]: array([0, 3]) 参数,请尝试axis

take

沿着轴拾取一个元素或一个元素列表比删除一些元素要容易得多。查看In [4]: np.take(arr,0,axis=1) Out[4]: array([0, 3]) 的代码。