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

如何在Python中实现文本与多矩阵混合写入TXT文件

问题描述

我查了不少Python将矩阵写入.txt文件的示例,但没找到简便方法实现需求:把多个矩阵和额外文本混合写入.txt文件(这些文本不是表头,所以用DataFrame方案不适用)。

假设我有以下矩阵:

import numpy as np
M1 = np.zeros((6, 6))
M2 = np.zeros((6, 6))
M3 = np.zeros((6, 6))

我希望每个矩阵标题行下方对应输出其矩阵内容,当前写入代码如下:

with open("example.txt", "w") as f:
    f.write("-------  MATRIX 1 ------------------------------------------------------------\n")    
    f.write("------- MATRIX 2 ---------------------------------------------------------\n")
    f.write("------- MATRIX 3 ---------------------------------------------------------\n")

期望生成的.txt文件格式如下:

-------  MATRIX 1 ------------------------------------------------------------
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
-------  MATRIX 2 ------------------------------------------------------------
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
-------  MATRIX 3 ------------------------------------------------------------
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
0    0    0    0    0    0
解决方法

直接用numpy自带的np.savetxt()方法,配合打开的文件句柄,就能在写完标题后直接写入矩阵内容,不用手动遍历每行。

基础实现代码

import numpy as np

M1 = np.zeros((6, 6))
M2 = np.zeros((6, 6))
M3 = np.zeros((6, 6))

with open("example.txt", "w") as f:
    # 写入矩阵1的标题和内容
    f.write("-------  MATRIX 1 ------------------------------------------------------------\n")
    np.savetxt(f, M1, fmt="%d", delimiter="    ")
    # 写入矩阵2的标题和内容,前面加换行分隔
    f.write("\n-------  MATRIX 2 ------------------------------------------------------------\n")
    np.savetxt(f, M2, fmt="%d", delimiter="    ")
    # 写入矩阵3的标题和内容,前面加换行分隔
    f.write("\n-------  MATRIX 3 ------------------------------------------------------------\n")
    np.savetxt(f, M3, fmt="%d", delimiter="    ")

关键参数说明

  • fmt="%d":指定矩阵元素以整数格式输出,匹配示例里的0;如果是浮点数,可改为fmt="%.2f"来控制小数位数。
  • delimiter=" ":用四个空格分隔元素,和期望的格式一致。
  • 每个矩阵标题前加\n,避免和上一个矩阵的最后一行连在一起。

批量矩阵简化写法

如果矩阵数量多,把标题和矩阵打包成列表,用循环简化代码,后续加新矩阵直接在列表里追加即可:

import numpy as np

# 把标题和对应的矩阵配对
matrix_list = [
    ("-------  MATRIX 1 ------------------------------------------------------------", np.zeros((6, 6))),
    ("-------  MATRIX 2 ------------------------------------------------------------", np.zeros((6, 6))),
    ("-------  MATRIX 3 ------------------------------------------------------------", np.zeros((6, 6))),
]

with open("example.txt", "w") as f:
    for idx, (title, mat) in enumerate(matrix_list):
        if idx != 0:
            f.write("\n")  # 除第一个矩阵外,前面加换行分隔
        f.write(f"{title}\n")
        np.savetxt(f, mat, fmt="%d", delimiter="    ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:20:45