2012-02-17 49 views
0

我使用python,我有一个非常基本的问题。 我有1000个元素的数组。我想选择这个数组的100个位置。 我想要做这样的事情从列表中选择数组

 selected_value=array[i for i in position_to_select] 

我怎样才能使这项工作?

回答

6

假设你有名单arr,要从其在位置0,4选择元素,2:

>>> arr = [1, 2, 3, 4, 5, 6, 7] 
>>> selected = [arr[i] for i in [0, 4, 2]] 
>>> selected 
[1, 5, 3] 
>>> 

我认为,与原有的代码示例的主要区别在于使用列表arr[i]理解。列表理解创建一个新列表。它不用于索引现有列表。

+0

谢谢!如果我想选择所有不属于列表的元素,该怎么办?我试着用selected = [arr [i]因为我不在[0,4,2]],但是我得到了一个无效的语法错误。 – Brian 2012-02-18 16:29:34

+0

@Matteo:最有效的方法是预先计算索引列表,然后使用相同的代码。事先计算可以是任意的,例如不满足某个谓词的索引 – 2012-02-19 10:54:37

3
>>> selected_value = [array[i] for i in position_to_select] 
1

如果使用大型数组经常加班,看看numpy

import numpy as np 

arr = np.array([3., 4., 3., 7., 3., 6., 9., 1., 2., 5.]) 
position_to_select = [1, 3, 6] 

selected_value = arr[position_to_select] 

# array([ 4., 7., 9.])