删除numpy数组中的列范围

Posted

技术标签:

【中文标题】删除numpy数组中的列范围【英文标题】:Remove range of columns in numpy array 【发布时间】:2016-06-06 05:07:42 【问题描述】:

我有一个数组:

e = np.array([[ 0,  1,  2,  3, 4, 7, 4],
              [ 4,  5,  6,  7, 2, 3, 1],
              [ 8,  9, 10, 11, 3, 5, 7]])

我想删除从第 1 列到第 3 列的列范围,所以它应该返回:

e = np.array([[ 0,  4, 7, 4],
              [ 4,  2, 3, 1],
              [ 8,  3, 5, 7]])

我见过一些解决方案,但是他们通过索引删除特定列,而不是在范围内,如何解决?谢谢

【问题讨论】:

【参考方案1】:
e = np.array([[ 0,  1,  2,  3, 4, 7, 4],

              [ 4,  5,  6,  7, 2, 3, 1],

              [ 8,  9, 10, 11, 3, 5, 7]])

np.delete(e, [1,3], axis=1)

>>>array([[ 0,  2,  4,  7,  4],
       [ 4,  6,  2,  3,  1],
       [ 8, 10,  3,  5,  7]])

【讨论】:

解决它使用:np.delete(e,np.s_[1:3],axis=1) 它将删除范围 1 到 3 中的列。【参考方案2】:

解决了这个问题:

np.delete(e,np.s_[1:3],axis=1)

它将删除范围 1 到 3 中的列。

【讨论】:

哇。太棒了! 基本上就是我写的。惊人的。 \s 不,@seanmus ...基本上不是你写的。这是关于删除 范围 列(从 1 到 3),而不是专门删除第 1 列和第 3 列。答案中缺少的 np.s_ 是其中最重要的部分。仅“使用np.s_”的答案会比“使用np.delete”更有帮助(就像你的答案)

以上是关于删除numpy数组中的列范围的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 numpy.array 中的列

使用花哨的索引从 Numpy 数组中查找和删除全零列

如何删除numpy数组中的特定元素

从 numpy 数组中删除一个元素

从给定的 2D numpy 数组中删除集群

如何从 2D numpy (lat,lon) 数组中删除扇区/切片?