2017-04-03 2 views
0

목록 목록을 5 개로 변환하려는 numpy.ndarray (5,6) (총 크기 (5,6,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], ] 
+1

'.tolist()'를 사용해 보셨습니까? – DyZ

+0

은 전체 ndarray를 배열로 변환합니다. 각 ndarray에 대한 행 목록이 필요합니다. 기본적으로 목록의 목록과 같은 것입니다. 바깥 쪽 (5) 중간 (6) 마지막 (5) –

+1

'arr'이 (5,6,5) 모양 인 경우'list (arr)' 5 (6,5) 배열 목록을 제공해야합니다. 'tolist()'는 그것을리스트의 모든리스트로 변환한다 -리스트의리스트. 가장 낮은 레벨의 배열에는 어떤 모양이 있어야합니까? – hpaulj

답변

0
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]]