python – 有没有一种有效的方法将numpy.ndarray转换为列表?

我有一个表格的数组Y(这只是一个例子,我有一个巨大的数据在这种形式).该数组是使用numpy的vstack和hstack形成的(即我不想改变我获取这个数组的方式,因为我通过一些复杂的操作获得了它):

 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])

考虑到我拥有的庞大数据,上述方法运行良好但速度很慢.有没有更快的方法来实现同样的目标?

解决方法:

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

我不确定这是否会比你对大型二维数组的速度快得多.将这样的数组转换为普通的列表列表是一种固有的低效操作 – 这就是你首先使用NumPy的原因.

上一篇:将PMML中的SVM模型导入Java或Python?


下一篇:如何在serialVersionUID发生变化后在java中加载libsvm模型