在R
我可以这样做
> a = (10:19)
> a
[1] 10 11 12 13 14 15 16 17 18 19
> b = c(4,7)
> b
[1] 4 7
>
> a[b]
[1] 13 16
>
> a[-b]
[1] 10 11 12 14 15 17 18 19
我认为对Python(2.7)列表有一个同样优雅的方法,但还没有找到。我对a[-b]
位特别感兴趣。有什么想法吗?
[编辑] a是[10,11,12,13,14,15,16,17,18,19],b是[4,7](指数成a)
答案 0 :(得分:2)
您可以使用列表推导
来执行此操作[n for n, i in enumerate(a) if i not in b]
或使用numpy:
x = np.arange(10, 20)
y = [2, 7]
x[y]
答案 1 :(得分:2)
a=numpy.array(range(10,20))
b = [4,7]
print a[b]
print a[~numpy.in1d(a,a[b])]
不是很优雅,但是......如果列表中有重复的元素,它也无法工作...因为它在否定步骤而不是索引中查看值
答案 2 :(得分:0)
你可能想要numpy:
import numpy as np
a = np.array(range(10,19))
b = [3,6]
a[b]
=> array([13, 16])
a[[_ for _ in range(len(a)) if _ not in b]]
=> array([10, 11, 12, 14, 15, 17, 18])