使用旧列表中的复制和平均项创建新列表

时间:2013-11-20 17:31:03

标签: python list numpy average

我有一个由几个子列表组成的主列表,这些子列表又由子列表组成(即:子子列表)这是我的意思的最小例子:

a = [[[0,1,2,3], [0,4,5,6]], [[1,1,2,7], [1,4,5,8]], [[2,1,2,9], [2,4,5,10]]]

请注意,每个子子列表中的0项表示它所在的子列表的索引,12项在两个子列表中是等效的 - 每个子列表中的子列表和第三个项目各不相同。

我需要通过省略零项来创建基于该列表的新列表,然后从每个子子列表(相等)复制项12并最终平均第三项。所以新列表看起来像这样:

b = [[1,2,6.33], [4,5,8.]]

如果零项目消失,则只复制项目12,并在子子列表中平均第三项:

6.33 = (3+7+9)/3
8. = (6+8+10)/3

我确信这可以使用zipnp.mean完成,但我无法完成。我可以接受那些没有使用这些工具的答案,这只是我对答案probalby的直觉。

1 个答案:

答案 0 :(得分:3)

我认为这有效:

a = [[[0,1,2,3], [0,4,5,6]], [[1,1,2,7], [1,4,5,8]], [[2,1,2,9], [2,4,5,10]]]
arr = np.asarray(a)

b =  arr[:, :, 1:].mean(0)

这取决于子子列表中的项12是相同的,因此它们的意思不会改变。

>>> b
array([[ 1.        ,  2.        ,  6.33333333],
       [ 4.        ,  5.        ,  8.        ]])