数组合并列表

问题描述 投票:0回答:1

数组列表看起来像这样:

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]]

但是它不适用于整个列表。

python arrays list
1个回答
0
投票
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数组。

© www.soinside.com 2019 - 2024. All rights reserved.