【问题标题】:Remove range of columns in numpy array删除numpy数组中的列范围
【发布时间】: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]])

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

【问题讨论】:

    标签: arrays python-2.7 numpy


    【解决方案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”更有帮助(就像你的答案)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多