如何将目录下带数值扩展名的文本文件内容合并存储为单个.npy文件
解决方法
原有代码错误原因
glob.glob()的路径参数没有加字符串引号,存在语法错误- 没有读取每个文件的数值内容,直接将文件名作为内容存储
- 循环内反复覆盖写入
data.npz,最终仅保留最后一个文件的相关信息 - 需求是输出
.npy格式(单个数组存储),错误使用了用于多文件压缩存储的np.savez方法
实现代码
import numpy as np import glob import os # 获取所有匹配文件并按文件名的数值后缀排序,避免字符串排序的顺序错误 file_list = glob.glob("./signal_*") file_list.sort(key=lambda x: float(os.path.basename(x).split("signal_data")[-1])) all_data = [] for file_path in file_list: # 逐行读取文件内容转为浮点数值 with open(file_path, "r") as f: values = [float(line.strip()) for line in f if line.strip()] all_data.append(values) # 转为numpy数组后保存为npy文件 merged_arr = np.array(all_data) np.save("merged_signal.npy", merged_arr)
验证方法
你可以通过以下代码查看生成的npy文件内容是否符合预期:
loaded_data = np.load("merged_signal.npy") print(loaded_data)
注意:如果不同文件内的数值数量不一致,生成的数组会自动转为对象类型,若需要固定维度的浮点数组,可在读取阶段添加数值数量校验逻辑。
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

