数组列表看起来像这样:
x = [['0', [array([22, 15])]], ['1', [array([4]), array([9])]], ['10', [array([21])]], ['11', [array([18]), array([29, 31])]], ['13', [array([10, 13])]]]
我如何合并它,使其看起来像这样:
[['0', [array([22, 15])]], ['1', [array([4, 9])]], ['10', [array([21])]], ['11', [array([18, 29, 31])]], ['13', [array([10, 13])]]]
首先,我需要填充以获得相同的长度。
我尝试过stack_padding
def stack_padding(l):
return np.column_stack((itertools.zip_longest(*l, fillvalue=0)))
[stack_padding(i) for i in x[:][1]]
但是它不适用于整个列表。
from functools import reduce
import numpy as np
[[idx, [reduce(np.append, arrays)]] for idx, arrays in x]
# [['0', [array([22, 15])]], ['1', [array([4, 9])]], ['10', [array([21])]], ['11', [array([18, 29, 31])]], ['13', [array([10, 13])]]]
idx
对应于每个子列表开头的字符串,并且我们通过相互追加reduce numpy数组。