我有一个由几个子列表组成的主列表,这些子列表又由子列表组成(即:子子列表)这是我的意思的最小例子:
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
项表示它所在的子列表的索引,1
和2
项在两个子列表中是等效的 - 每个子列表中的子列表和第三个项目各不相同。
我需要通过省略零项来创建基于该列表的新列表,然后从每个子子列表(相等)复制项1
和2
并最终平均第三项。所以新列表看起来像这样:
b = [[1,2,6.33], [4,5,8.]]
如果零项目消失,则只复制项目1
和2
,并在子子列表中平均第三项:
6.33 = (3+7+9)/3
8. = (6+8+10)/3
我确信这可以使用zip
和np.mean
完成,但我无法完成。我可以接受那些没有使用这些工具的答案,这只是我对答案probalby的直觉。
答案 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)
这取决于子子列表中的项1
和2
是相同的,因此它们的意思不会改变。
>>> b
array([[ 1. , 2. , 6.33333333],
[ 4. , 5. , 8. ]])