我有一个看起来像这样的列表列表:
[[51502 2 0 ... 0 1 1]
[8046 2 0 ... 1 1 2]
....
[40701 1 1 ... 1 1 1]]
对于我来说,嵌套列表中的每个第一个元素都是“不适当的”,我想删除所有这些元素。
# My goal:
[[2 2 0 ... 0 1 1]
[2 0 ... 1 1 2]
....
[1 1 ... 1 1 1]]
我已经尝试过使用for循环np.delete(the_nested[i],0)
,但它给我的错误是“ 无法广播输入数组”
我还尝试过使用del
和pop
手动删除它,但是正如预期的那样,numpy自静态以来就不允许使用它。
谁能提供替代解决方案?
更新:the_nested的类型为
numpy.ndarray
注意:如果这篇文章被发现是重复的,我很抱歉(希望不是!):(
答案 0 :(得分:3)
我认为您可以将其索引出来:
np.array(the_nested)[:,1:]
在您的情况下:
the_nested = [[51502, 2, 0, 0, 1, 1],
[8046 ,2 ,0 , 1 ,1 ,2],
[40701, 1 ,1 ,1 ,1 ,1]]
>>> np.array(the_nested)[:,1:]
array([[2, 0, 0, 1, 1],
[2, 0, 1, 1, 2],
[1, 1, 1, 1, 1]])
或者,使用np.delete
(无需循环):
>>> np.delete(np.array(the_nested),0,axis=1)
array([[2, 0, 0, 1, 1],
[2, 0, 1, 1, 2],
[1, 1, 1, 1, 1]])
答案 1 :(得分:1)
我看到您有一个列表,如果您不想使用诸如numpy
之类的其他软件包,则可以执行以下操作。但这涉及循环。另外,它不会修改原始列表。
the_nested = [[51502, 2, 0, 0, 1, 1],
[8046 ,2 ,0 , 1 ,1 ,2],
[40701, 1 ,1 ,1 ,1 ,1]]
res = []
_ = [res.append(x[1:]) for x in the_nested]
# Output :
[[2, 0, 0, 1, 1], [2, 0, 1, 1, 2], [1, 1, 1, 1, 1]]