2012-03-26 94 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的原因。

相关问题