2017-02-09 54 views
0

的平均到2d我收到一個輸出如下面:需要轉換3D陣列與內陣列

y = [[[1,1,1,1,1,1,1] ,[2,2,2,2,2,2,2], [3,3,3,3,3,3,3]],[[4,4,4],[5, 5, 5],[6, 6, 6]]] 

最終輸出應爲如下:

Y = [[1, 2, 3], [4, 5, 6]] 

如何至y轉換到Y? [在這裏,最裏面的數組(或任選的任何元素)的平均值需要用作基本元素,最終數組(Y)需要是2D,而預最終數組(y)是3D。

(我是新來numpy的/ Python的,所以這個問題我看傻了,如果需要任何其他信息,請讓我知道)

回答

0

試試這個,

result = [] 
for i in lst: 
    result.append([j[0] for j in i]) 
print result 

結果

[[1, 2, 3], [4, 5, 6]] 
0

隨着列表理解:

y = [[[1,1,1,1,1,1,1] ,[2,2,2,2,2,2,2], [3,3,3,3,3,3,3]],[[4,4,4],[5, 5, 5],[6, 6, 6]]] 

Y = [[x[0] for x in z] for z in y] # [[1, 2, 3], [4, 5, 6]] 
0

雙迴路和插入會做的伎倆

import numpy as np 
y = [[[1, 1, 1, 1, 1, 1, 1 ], [2, 2, 2, 2, 2, 2, 2 ] ,[3, 3, 3, 3, 3, 3, 3]],[[4, 4, 4],[5, 5, 5],[6, 6, 6]]] 

Y = [] 
for l in y:   
    inner_l = [] 
    for sub_l in l : 
     inner_l.append(np.mean(sub_l)) 
    Y.append(inner_l) 
print Y 
0
y=[[[1,1,1,1,1,1,1] ,[2,2,2,2,2,2,2], [3,3,3,3,3,3,3]],[[4,4,4],[5, 5, 5],[6, 6, 6]]] 
rslt = [] 
for x in y: 
    lst=[] 
    for m in x: 
     lst.append([m[0]]) 
    rslt.append(lst) 

結果:

rslt = [[1, 2, 3], [4, 5, 6]]