我有三个具有相同长度的列表和另一个列表,用于存储我需要从所有三个列表中删除的元素的索引.这是我的意思的一个例子:
a = [3,4,5,12,6,8,78,5,6]
b = [6,4,1,2,8,784,43,6,2]
c = [8,4,32,6,1,7,2,9,23]
(都有len()= 9)
另一个列表包含我需要从所有三个列表中删除的元素的索引:
d = [8,5,3]
(请注意,它已经排序)
我知道我可以从三个列表中删除一个元素:
for indx in d:
del a[indx]
del b[indx]
del c[indx]
我怎么能在一行中做到这一点?
最佳答案 如果你的三个列表是2D numpy.array删除指定的列,那么numpy对于这样的东西很有用.
a = [3,4,5,12,6,8,78,5,6]
b = [6,4,1,2,8,784,43,6,2]
c = [8,4,32,6,1,7,2,9,23]
big_array = np.array([a,b,c])
d = [8,5,3]
结果:
>>> big_array
array([[ 3, 4, 5, 12, 6, 8, 78, 5, 6],
[ 6, 4, 1, 2, 8, 784, 43, 6, 2],
[ 8, 4, 32, 6, 1, 7, 2, 9, 23]])
>>> np.delete(big_array, d, axis=1)
array([[ 3, 4, 5, 6, 78, 5],
[ 6, 4, 1, 8, 43, 6],
[ 8, 4, 32, 1, 2, 9]])