2012-03-15 29 views
60

Yalnızca sayısal komut dizilerini, yalnızca komutları, listeleri ve diktikleri desteklemeyen bir harici modül (libsvm) kullanıyorum. Ama verilerim 2d numpy dizisinde. Bunu pythonic yolu nasıl çevirebilirim? Sen scikit-öğrenme kontrol etmek isteyebilirsiniz2d numpy dizisini listelerin listesine dönüştürün

>>> import numpy 
>>> array = numpy.ones((2,4)) 
>>> data_list = list(array) 
>>> data_list 
[array([ 1., 1., 1., 1.]), array([ 1., 1., 1., 1.])] 

>>> type(data_list[0]) 
<type 'numpy.ndarray'> # <= what I don't want 

# non pythonic way using for loop 
>>> newdata=list() 
>>> for line in data_list: 
...  line = list(line) 
...  newdata.append(line) 
>>> type(newdata[0]) 
<type 'list'> # <= what I want 
+7

, yerel Numpy dizileri işlemek yapan bir LIBSVM sarmalayıcı içeren. http://scikit-learn.org/stable/modules/classes.html#module-sklearn.svm –

cevap

92
>>> import numpy 
>>> a = numpy.ones((2,4)) 
>>> a 
array([[ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.]]) 
>>> a.tolist() 
[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]] 
>>> type(a.tolist()) 
<type 'list'> 
>>> type(a.tolist()[0]) 
<type 'list'> 
İlgili konular