如何将两个9x9矩阵CSV合并为9x9x2格式numpy文件,解决输出为9x18问题
问题原因
你的代码存在两个核心问题:
- 仅做了纯文本内容的拼接,没有把CSV文件加载为numpy矩阵做维度层面的合并,所以得到的是行/列拼接的二维结构
- 输出的是普通文本CSV文件,不是numpy格式的存储文件
修改后完整代码
import os, glob import numpy as np from collections import defaultdict dirs = ['/content/drive/MyDrive/Colab Notebooks/Nuova cartella/mu1/real', '/content/drive/MyDrive/Colab Notebooks/Nuova cartella/mu1/imag'] file_pattrn = r'*.csv' unique_files = defaultdict(list) for d in dirs: for i in glob.iglob(os.path.join(d, file_pattrn)): unique_files[os.path.basename(i)].append(i) destination = '/content/drive/MyDrive/Colab Notebooks/New_Dataset' # 目标目录不存在则自动创建 os.makedirs(destination, exist_ok=True) for unique_filename, copies in unique_files.items(): # 校验每个文件名匹配到2个待合并的csv文件 if len(copies) != 2: print(f"警告:文件{unique_filename}匹配到{len(copies)}个副本,跳过处理") continue # 分别加载两个csv为9x9数值矩阵 arr1 = np.loadtxt(copies[0], delimiter=',') arr2 = np.loadtxt(copies[1], delimiter=',') # 在第三维度堆叠两个矩阵,得到9x9x2的目标结构 arr_merged = np.stack([arr1, arr2], axis=2) # 生成npy格式存储文件名,替换原csv后缀 save_name = os.path.splitext(unique_filename)[0] + '.npy' save_path = os.path.join(destination, save_name) # 保存为numpy二进制文件,完整保留维度信息 np.save(save_path, arr_merged)
关键修改说明
- 新增numpy依赖,用
np.loadtxt直接读取CSV内容为数值矩阵,默认逗号分隔符符合CSV格式规范 - 使用
np.stack指定axis=2参数,在第三个维度堆叠两个9x9矩阵,直接生成预期的9x9x2维度结构 - 输出改为numpy标准二进制
.npy格式,后续读取时直接调用np.load()即可拿到对应维度的数组 - 新增异常校验和目录自动创建逻辑,避免文件匹配异常、目录不存在导致的运行错误
内容的提问来源于stack exchange,提问作者Silvia Leccabue
相关产品推荐
相关产品推荐

