You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中对多个等长列表同索引位置元素按列求和实现问询

Python实现多个等长列表按索引同位置(按列)求和方案

第一步:修正原始生成代码,存储生成的数组

你原来的代码仅打印了每轮的抛硬币结果,没有存储到容器中,先调整生成函数:

import numpy as np
import random as rnd

result = [0,1] # 0代表反面,1代表正面
probability = [1/2,1/2]
N = 10 # 每轮抛硬币次数
all_rounds = [] # 存储所有轮次的抛硬币结果

def list_generator(number): # number为轮次数量,本例中为5
    for i in range(number):
        n_round = np.array(rnd.choices(result, probability, k=N)) 
        print(n_round)
        all_rounds.append(n_round) # 将每轮结果追加到存储列表中

list_generator(5)

运行后你示例的输出会被全部存入all_rounds列表,结构为5个长度为10的数组组成的集合。

第二步:按列求和的两种实现方式

方案1:使用numpy实现(推荐,适配后续绘图场景)

numpy内置按轴求和功能,直接堆叠数组后指定按行方向(轴0)求和,即可得到按列求和结果:

# 将所有轮次的数组合并为二维数组,shape为(5,10)
rounds_matrix = np.array(all_rounds)
# 按轴0求和(即每一列的所有元素相加),得到长度为10的求和结果数组
col_sum = rounds_matrix.sum(axis=0)
print(col_sum)

你给出的示例输入运行后会得到结果:[2 3 1 2 1 3 2 3 3 3],完全符合你要求的计算逻辑。如果需要转成普通Python列表,加一行col_sum = col_sum.tolist()即可。

方案2:纯Python实现(无numpy依赖)

如果不想引入numpy依赖,用内置的zip函数可以直接打包所有列表的同索引元素,逐组求和即可:

# 先将numpy数组转成普通列表再打包,逐组求和
col_sum = [sum(col) for col in zip(*[arr.tolist() for arr in all_rounds])]
print(col_sum)

后续使用说明

得到的col_sum可以直接传给matplotlib等绘图库做可视化,不需要额外格式转换。


内容的提问来源于stack exchange,提问作者F08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:04