2012-03-26 93 views
3

我有一個形式的數組Y(這只是一個例子,我有一個巨大的數據在這種形式)。該陣列是使用numpy的的vstack和hstack形成(即我不想改變我如何獲得這個數組,因爲我已經通過一些複雜的操作獲得它):有沒有一種有效的方法將numpy.ndarray轉換爲列表?

Y=array([[1, 1,2], 
     [1, 2,0], 
     [-1, 3,1], 
     [-1, 2,2]]) 
y=[1,1,-1,-1] 
Y1=list(Y) 

現在我輸入數據到libsvm函數,這個庫期望輸入參數是字典,列表或元組形式。因此,對於相同的代碼是:

prob=svm_problem(y, Y1) 

上述功能引發的錯誤「XI應該是一個字典,列表或元組」。我知道的另一種方法是將Y轉換爲迭代列表。做到這一點的方式是:

Y1=[] 
for i in range(0, Y.shape[0]): 
     Y1.append(list(Y[i]) 

上述方法效果很好,但速度很慢考慮到我有巨大的數據。有沒有更快的方法來完成相同的目標?

回答

7
>>> Y.tolist() 
[[1, 1, 2], [1, 2, 0], [-1, 3, 1], [-1, 2, 2]] 

我不確定這是否會比您對大型二維數組的速度快得多。將這樣的數組轉換爲普通的列表清單本質上是一個低效率的操作 - 這就是爲什麼您首先使用NumPy的原因。

相關問題