-5

假设 x 有三个样本:2、3、4 y 有四个样本:5、6、7、8 在编码方面,我如何添加这些样本以获得 7、9、11、8

4

1 回答 1

0

欢迎!我猜这个请求可能还有更多内容,但是如果您想以您描述的方式添加两个列表,您可以使用zip

设置列表

x = [2, 3, 4]
y = [5, 6, 7]

你可以像这样添加它们

print([sum(k) for k in zip(x, y)])

你得到这个输出

[7, 9, 11]

编辑 - 添加以考虑不同的列表长度

来自 [2, 3, 4] 和 [5, 6, 7, 8] 的原始请求的结果为 [7, 9, 11, 8]。要以 8 结尾来达到这个结果,第一个列表需要用 0 进行“填充”。您会注意到,在上面,8 被提前了。

设置列表

x  = [2, 3, 4]
y = [5, 6, 7, 8]

将列表添加到列表

ls_start = []
ls_start.append(x)
ls_start.append(y)

从列表列表中计算出列表的最大长度

max_len = max(map(len, ls_nums))

我们将使用它来计算将较短的列表“填充”多少

创建一个列表来保存“填充”列表,这将是我们用来进行交叉添加的最终列表

ls_final = []

遍历列表填充那些需要填充的列表

for ls in ls_nums:
    if len(ls) < max_len:

        extend = max_len - len(ls) 
        for add in range(extend): 
            ls.append(0)
        ls_final.append(np.array(ls))
    else: 
        ls_final.append(np.array(ls))

如果你看一下 ls_final 你会看到它包含

[array([2, 3, 4, 0]), array([5, 6, 7, 8])]

添加数组列表

ls_sum = np.zeros(max_len)

for ls in ls_final:
    ls_sum += ls

如果你看一下 ls_sum,你会看到

array([ 7.,  9., 11.,  8.])

您可以转换为列表

ls_sum.tolist()

得到这个

[7.0, 9.0, 11.0, 8.0]

此方法允许任意数量的列表。

于 2019-10-13T19:09:20.390 回答