【问题标题】:delete the last element in the array with numpy用 numpy 删除数组中的最后一个元素
【发布时间】:2019-05-04 04:01:38
【问题描述】:

我有这样的问题..

arr = [['1' '2' '']['3' '4' '']['5' '6' '']]

那么,如何删除最后一个元素 - array[n][2] 我已经尝试并搜索了很多谷歌但没有解决它 请帮我解决这个问题谢谢...

arr = [['1' '2']['3' '4']['5' '6']]

【问题讨论】:

标签: python-3.x numpy


【解决方案1】:

使用 numpy.delete(arr,-1,1)

arr = numpy.array([['1','2',''],['3','4',''],['5','6','']])
arr = numpy.delete(arr,-1,1)

结果将是:

[['1' '2']
['3' '4']
['5' '6']]

【讨论】:

    【解决方案2】:

    我会使用 numpy.apply_along_axis 从每个子列表中删除最后一个元素

    import numpy as np
    arr = np.array([['1', '2', ''],['3' ,'4', ''],['5', '6' ,'']])
    
    #Slice each sublist to remove the last element using apply_along_axis
    arr = np.apply_along_axis(lambda x: x[:-1], 1, arr)
    print(arr)
    

    输出将是

    [['1' '2']
     ['3' '4']
     ['5' '6']]
    

    【讨论】:

    • 等一下。有一个numpy 标签。
    • 即使它是一个 numpy 数组,map 仍然可以工作@Austin,我更新了我的答案以反映这一点!我不明白投反对票的原因吗?
    • 我同意它有效,但 OP 要求用 numpy 方法来解决它。
    • 当然@Austin,我使用了一个numpy函数,请检查,如果它看起来不错,请考虑投票:)
    • @Austin 但是,他们的代码中没有包含 numpy 的数组。 arr 只是 list。如果我们可以在标准库中解决它,我认为numpy 不是强制性的。
    【解决方案3】:
    In [415]: arr = np.array([['1', '2', ''],['3' ,'4', ''],['5', '6' ,'']]) 
         ...:                                                                            
    In [416]: arr                                                                        
    Out[416]: 
    array([['1', '2', ''],
           ['3', '4', ''],
           ['5', '6', '']], dtype='<U1')
    

    只取一个列切片:

    In [417]: arr[:, :-1]                                                                
    Out[417]: 
    array([['1', '2'],
           ['3', '4'],
           ['5', '6']], dtype='<U1')
    

    这会产生一个新数组,但对于numpy 来说这是正常的。大多数numpy 操作,尤其是改变大小/形状的操作,都会这样做。

    arr的OP显示与numpy数组一致。但是对于复制粘贴,repr 显示效果更好。

    In [418]: print(arr)                                                                 
    [['1' '2' '']
     ['3' '4' '']
     ['5' '6' '']]
    

    【讨论】:

      【解决方案4】:

      我有个想法用 len() 检查 ''。

      arr = [['1', '2', ''],['3', '4', ''],['5', '6', '']]
      arr = [[a for a in ar if len(a) > 0] for ar in arr]
      print (arr)
      

      结果是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-01
        • 2012-01-05
        • 2018-11-16
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2013-01-14
        相关资源
        最近更新 更多