2012-03-26 11 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]] 

大型の2次元配列の場合よりもはるかに高速かどうかはわかりません。このような配列を単純なリストのリストに変換することは、本質的に効率の悪い操作です。そのため、まずNumPyを使用します。

関連する問題