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

如何在Python的for循环中向数组追加每次迭代的结果?

如何在for循环中向数组追加每次迭代的结果?

问题代码

data = np.array([])
for sheet in sheets:
    result = pd.read_excel(file_loc, sheet_name = sheet,usecols="Q").dropna()
    result = result.values.tolist()
    result = result[1:]
    print(result)

当前输出

每次循环中print(result)返回:

[1 , 2 , 3]

[4 , 5 , 6]

[7 , 8 , 9]

期望输出

最终print(data)的结果为:

[[1 , 2 , 3],
 [4 , 5 , 6],
 [7 , 8 , 9]]

解决方案

方法1:用Python列表收集结果(推荐,效率更高)

numpy数组的内存是连续分配的,每次追加都会重新开辟内存,数据量大时性能较差。更高效的方式是先用Python列表收集所有结果,最后再转换为numpy数组:

# 初始化空列表用于存储每次迭代结果
data_list = []
for sheet in sheets:
    result = pd.read_excel(file_loc, sheet_name=sheet, usecols="Q").dropna()
    result = result.values.tolist()
    result = result[1:]
    # 将当前迭代的结果追加到列表中
    data_list.append(result)
# 将列表转换为numpy数组
data = np.array(data_list)
print(data)

方法2:直接使用numpy的append方法

如果一定要直接操作numpy数组,可以用np.append,但注意要保持数组维度一致(每次追加二维数组):

data = np.array([])
for sheet in sheets:
    result = pd.read_excel(file_loc, sheet_name=sheet, usecols="Q").dropna()
    result = result.values.tolist()
    result = result[1:]
    # 第一次循环时初始化二维数组
    if data.size == 0:
        data = np.array([result])
    else:
        # 按行追加结果,指定axis=0
        data = np.append(data, [result], axis=0)
print(data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:43:16