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

标签 python numpy scipy python-2.7 libsvm

我有一个 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 should be a dictionary, list or tuple”。我知道的另一种方法是将 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 的原因。

关于python - 有没有一种有效的方法可以将 numpy.ndarray 转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876172/

相关文章:

python - 最好的 Python GIS 库?

python - Pandas 面板数据 - 考虑年份差距将值移动两次

python - 在 groupby 数据帧上使用 Scipy Percentileofscore

Python:去除图像中水平黑线的快速方法

python - 如何修复 Python 3 中字典处理的顺序?

python - 二维矩阵上的 Numpy where()

numpy - "broadcasting"一词从何而来?

python - 使用 Python 列表计算多项式的乘积

python - scipy gaussian_kde 根据使用的方法(权重与无权重)产生不同的结果

python - Plotly 破折号服务器端缓存