2012-02-17 61 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.])