数组方法tolist
是将数组转换为列表的简单快速的方法。它正确处理多个维度:
In [92]: arr = np.arange(12).reshape(3,4)
In [93]: arr
Out[93]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [94]: arr.tolist()
Out[94]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
对于大多数目的,例如列表的列表与元组的列表或元组的元组一样好。它们的区别仅在于可变性。
但如果你必须有一个元组,列表理解可以很好地完成转换。
In [95]: [tuple(x) for x in arr.tolist()]
Out[95]: [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)]
替代[tuple(x) for x in arr]
有点慢,因为它是在数组上而不是在列表上迭代。它也会产生不同的结果 - 尽管你必须检查type
的元组元素来查看。
我强烈建议从tolist
方法,并在之后进行任何列表到元组的转换。