假设 x 有三个样本:2、3、4 y 有四个样本:5、6、7、8 在编码方面,我如何添加这些样本以获得 7、9、11、8
问问题
37 次
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 回答