0
我有一个列表numpy.ndarray(5,6)(总大小(5,6,5)),我想转换成列表的列表5。每个列表应该包含每个numpy.ndarray每行的信息。将numpy ndarray的列表转换为多个列表的列表
这样做的一种方法是手动操作,但这对于较大的numpy.ndarrays会很麻烦,耗时,所以我该如何有效地做到这一点?
例如:
>>> import numpy
>>> a = numpy.zeros((6,5))
>>> b = numpy.ones((6,5))
>>> c = numpy.ones((6,5))*2
>>> d = [a,b,c]
>>> print d
[array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]]), array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]]), array([[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.]])]
>>> e = list(d)
>>> print e
[array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]]), array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]]), array([[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.]])]
# not wanted
>>> print e[0].tolist()
[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]]
#wanted
>>> [[0.0, 0.0, 0.0, 0.0, 0.0], [1,1,1,1,1], [2, 2, 2, 2, 2], ]
你试过'.tolist()'吗? – DyZ
这将转换整个ndarray到一个数组..我需要有每个ndarray行的列表。 基本上..类似于列表清单的列表.. 外(5,)中(6,)最后(5) –
如果'arr'是(5,6,5)形状,'list(arr)应该列出5(6,5)个数组。 'tolist()'将它转换为一路向下 - 列表列表。最底层的阵列应该有什么形状? – hpaulj