2013-10-28 65 views
3

的列表中的多個組我要改變值的列表爲多個陣列組,如下所示:的Python:如何轉換陣列

list_train_data = [u'Class 1', 
u'Class 2', 
u'Class 3', 
u'Class 4', 
u'Class 5'] 

我需要這個值到像數組:

train_set = [['Class 1'],['Class 2'],['Class 3'],['Class 4'],['Class 5']] 

如果可能不用於循環。

回答

7

使用列表理解:

train_set = [[x] for x in list_train_data] 

演示:

>>> list_train_data = [u'Class 1', u'Class 2', u'Class 3', u'Class 4', u'Class 5'] 
>>> [[x] for x in list_train_data] 
[[u'Class 1'], [u'Class 2'], [u'Class 3'], [u'Class 4'], [u'Class 5']] 
+2

從技術上講,這仍然是使用循環。 –

+1

爲什麼這是低調? –

7

Scince你加入numpy的標籤,這裏是一個numpy的解決方案:

list_train_data = [u'Class 1', 
u'Class 2', 
u'Class 3', 
u'Class 4', 
u'Class 5'] 

import numpy as np 
np.array(list_train_data, "O")[:, None] 

結果是:

array([[u'Class 1'], 
     [u'Class 2'], 
     [u'Class 3'], 
     [u'Class 4'], 
     [u'Class 5']], dtype=object) 
1

當然有不使用循環的另一種方式,並使用map功能這就是:

>>> list_train_data = ['Class 1', 
        'Class 2', 
        'Class 3', 
        'Class 4', 
        'Class 5'] 
>>> map(lambda x: [x], list_train_data) 
[['Class 1'], ['Class 2'], ['Class 3'], ['Class 4'], ['Class 5']] 

沒有循環任何責任。然而這比LC慢。但仍然沒有看到for循環。

+2

帶'lambda'的'map'實際上比LC要慢。 [Python列表理解VS.地圖](http://stackoverflow.com/a/1247490/846892) –

+0

@hcwhsa但仍然沒有'for':P –

+0

downvote的原因? –