切片Python列表与切片R矢量

时间:2013-07-31 23:02:44

标签: python r

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)

3 个答案:

答案 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])