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

MPI生成多份output.txt文件,如何高效加载并合并为单个数组?

批量合并MPI输出文件的高效方法

方法一:用Pandas快速实现

Pandas对批量文件的读取合并支持很友好,配合glob匹配文件,能轻松搞定跳过首行+合并的需求:

import pandas as pd
import glob

# 匹配所有output.txt开头的文件
file_paths = glob.glob("output.txt*")
# 批量读取(跳过首行)并合并成DataFrame
combined_df = pd.concat([pd.read_csv(f, skiprows=1, header=None, sep='\s+') for f in file_paths], ignore_index=True)
# 转成numpy数组(按需转换)
halo_c = combined_df.to_numpy()

这里sep='\s+'适配空格分隔的文本文件,若你的文件是其他分隔符直接替换即可。Pandas的IO优化比手动循环numpy.loadtxt更高效,代码也更简洁。

方法二:优化版Numpy写法

如果更倾向Numpy生态,用glob批量匹配+genfromtxt生成器表达式,能减少中间内存开销:

import numpy as np
import glob

file_paths = glob.glob("output.txt*")
# 生成器逐个读取文件,避免一次性创建多个中间数组
halo_c = np.concatenate([np.genfromtxt(f, skip_header=1) for f in file_paths])

genfromtxt比loadtxt兼容性更好,批量匹配文件名也不用手动拼接序号,比你原来的写法更省心。

方法三:超大数据用Dask并行加载

如果后续文件数量暴涨、数据量超出内存,Dask可以实现并行延迟加载,避免内存溢出:

import dask.dataframe as dd

# 自动匹配所有目标文件,并行读取
dask_df = dd.read_csv("output.txt*", skiprows=1, header=None, sep='\s+')
# 计算并转成numpy数组
halo_c = dask_df.compute().to_numpy()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:10:00