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

Python中最符合Python风格的批量TXT数据导入数组方法

Python实现MATLAB多TXT文件读取逻辑 + 符合Python风格的TXT数据导入方法

一、对应MATLAB代码的Python实现

你的MATLAB代码逻辑是读取当前目录下所有.txt文件,提取第一列作为x数组,将每个文件的第二列作为单独列存入y数组。以下是功能对等的Python实现(基于numpy,和MATLAB的数组操作逻辑最接近):

import numpy as np
import os

# 获取当前目录下所有txt文件
txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
N = len(txt_files)

# 初始化y数组(先读取第一个文件确定行数)
first_data = np.loadtxt(txt_files[0])
x = first_data[:, 0]
y = np.zeros((len(x), N))

# 循环读取所有文件
for i in range(N):
    data = np.loadtxt(txt_files[i])
    # 假设所有文件第一列相同,若不同可根据需求调整
    y[:, i] = data[:, 1]

说明:

  • 用os.listdir筛选出.txt文件,替代MATLAB的dir
  • numpy.loadtxt对应MATLAB的importdata,可直接读取数值型文本数据
  • 先读取第一个文件确定数组维度,避免动态扩容影响效率

二、符合Python风格的TXT数据导入方式

Python生态中,有两种更简洁、符合Pythonic风格的实现方式:

1. 基于numpy的简洁写法(列表推导式)

import numpy as np
import os

txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
# 读取所有文件的第二列,合并为y数组
all_columns = [np.loadtxt(f)[:, 1] for f in txt_files]
y = np.column_stack(all_columns)
# 取第一个文件的第一列作为x
x = np.loadtxt(txt_files[0])[:, 0]

用列表推导式批量读取数据,再通过np.column_stack合并列,代码更紧凑。

2. 基于pandas的高效实现(适合大规模数据)

如果文件数量多、数据量大,pandas的处理更高效且代码更简洁:

import pandas as pd
import os

txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
# 批量读取所有txt文件,合并为DataFrame
df_list = [pd.read_csv(f, sep='\s+', header=None, usecols=[1]) for f in txt_files]
y_df = pd.concat(df_list, axis=1)
# 转换为numpy数组(若需要)
y = y_df.values
# 获取x数组
x = pd.read_csv(txt_files[0], sep='\s+', header=None)[0].values
  • pd.read_csv支持自动识别空格分隔符(sep='\s+'),无需手动处理格式
  • pd.concat可快速合并多个DataFrame为宽表,适合后续分析

附:你的TXT数据格式示例(空格分隔的两列数值):

896.5000000000 0.8694710776
896.7500000000 0.7608314184
897.0000000000 0.6349069122
897.2500000000 0.5092121001
897.5000000000 0.3955858698

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:35:22