需要将3d数组转换为2d,内部数组为

时间:2017-02-09 07:01:44

标签: python numpy

我收到如下输出:

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的新手,所以这个问题我看起来很蠢,如果需要其他信息,请告诉我)

4 个答案:

答案 0 :(得分:0)

试试这个,

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

<强>结果

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

答案 1 :(得分: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]]

答案 2 :(得分: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 

答案 3 :(得分: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]]