[英]Convert list of numpy ndarray to multiple list of lists
我有一個numpy.ndarray(5,6)(總大小(5,6,5))的列表,我想將其轉換為5個列表列表。 每個列表應包含每個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], ]
d
是3個數組的列表。 list(d)
不變。
e = np.array(d)
將產生一個(3,6,5)3d數組。
In [37]: e=np.array(d)
In [38]: e.shape
Out[38]: (3, 6, 5)
In [39]: e[:,0,:]
Out[39]:
array([[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2]])
In [40]: list(e[:,0,:])
Out[40]: [array([0, 0, 0, 0, 0]), array([1, 1, 1, 1, 1]), array([2, 2, 2, 2, 2])]
In [41]: e[:,0,:].tolist()
Out[41]: [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.