用numpy删除数组中的最后一个元素

时间:2019-05-04 04:01:38

标签: python-3.x numpy

我有这样的问题。

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

然后,如何删除最后一个元素-array [n] [2] 我已经尝试和搜索过很多Google,但没有解决 请帮助我解决这个问题,谢谢...

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

4 个答案:

答案 0 :(得分: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']]

答案 1 :(得分:0)

我会使用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']]

答案 2 :(得分:0)

我有个想法用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']]

答案 3 :(得分:0)

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数组一致。但是,对于复制n粘贴,repr的显示效果更好。

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