2016-03-19 167 views
0

我有一組標籤:蟒蛇重複索引到一個列表或numpy的陣列

>> labels = ['Male', 'Female'] 

和指數的列表:

>> ii = [0,0,1,0,1,0,1,0,0] 

我試圖讓標籤對應的列表索引:

這給了我一個錯誤。我期望得到的是:

['Male', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female', 'Male', 'Male'] 

這在Matlab中很容易。

我想我可以使用列表理解:

[labels[i] for i in ii] 

有另一種更直接的方式在Python來得到這個?

+1

'np.take(標籤,II)'? – Divakar

+2

'[ii]中的[標籤[i]]是執行此操作的直接方式。你爲什麼不喜歡那種方法?速度?可讀性? – CoryKramer

+0

列表不接受這種索引,但numpy數組。 'np.take'首先將'labels'轉換爲數組。如果你想堅持一個列表(可能會更快),理解是很好的。 – hpaulj

回答

2

如果lablels是一個numpy數組,例如

labels=numpy.array(['Male', 'Female']) 

可以簡單的寫

labels[ii] 

輸出是

array(['Male', 'Male', 'Female', 'Male', 'Female', 'Male', 'Female', 
     'Male', 'Male'], 
     dtype='|S6') 
+0

你是對的。我沒有嘗試numpy數組與花式索引。 – breezymri