簡體   English   中英

將numpy ndarray列表轉換為多個列表列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM