将2D的numpy数组转换为列表的列表

117

我使用一个外部模块 (libsvm),它不支持numpy数组,只支持元组、列表和字典。但是我的数据是一个二维numpy数组。我该如何以Pythonic的方式将其转换,即不使用循环。

>>> 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
您可能希望查看scikit-learn,它包括一个LibSVM包装器,可原生地处理Numpy数组。http://scikit-learn.org/stable/modules/classes.html#module-sklearn.svm - Fred Foo
1个回答

177
你可以用 matrix.tolist() 将矩阵简单地转换为列表,证明如下:
>>> 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'>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接