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

numpy矩阵打印与保存时每行被拆分的问题求助

问题原因及解决办法

这个问题其实是numpy默认的打印格式设置导致的,和终端、编辑器完全无关。

具体原因

当你用str(row)把numpy矩阵的行转换成字符串时,numpy内部会按照默认的打印选项生成字符串——其中有一个linewidth参数,它控制了每行输出的最大字符数。默认情况下这个值通常在75左右,而你的矩阵每行包含多个长格式的科学计数法数字,拼接起来的字符串长度远远超过了这个阈值,所以numpy自动把每行拆分成了多行来显示。

你可以通过运行下面的代码查看当前的打印选项:

import numpy as np
print(np.get_printoptions())

输出里的linewidth就是当前的行宽上限。

解决办法

有两种简单的方式可以解决这个问题:

1. 全局修改numpy的打印选项

在代码开头设置一个足够大的linewidth,这样后续所有的打印和字符串转换都会遵循这个设置:

import numpy as np
# 设置行宽为200(可以根据你的矩阵长度调整更大的值)
np.set_printoptions(linewidth=200)

M = np.matrix([[-4.41991030e-05,-9.27712599e-04,3.75797779e-04,4.11804326e-04,1.08815444e-04], [-3.58432112e-04,-6.11583291e-04,1.18565910e-03,4.10337098e-04,9.96854953e-05], [-1.36865905e-03,1.19013259e-03,1.62785645e-03,1.85052363e-04,6.73256050e-05], [-0.00292639,-0.0084904,-0.00337932,-0.00014984,0.0001385]])

# 现在打印矩阵不会自动换行了
print(M)

# 写入文件也会保持单行
with open('file.txt', 'w') as f:
    for row in M:
        f.write(str(row))
        f.write('\n')

2. 单独处理每行的字符串转换

如果你不想全局修改打印选项,可以在写入文件时,用np.array2string()单独指定行宽:

import numpy as np

M = np.matrix([[-4.41991030e-05,-9.27712599e-04,3.75797779e-04,4.11804326e-04,1.08815444e-04], [-3.58432112e-04,-6.11583291e-04,1.18565910e-03,4.10337098e-04,9.96854953e-05], [-1.36865905e-03,1.19013259e-03,1.62785645e-03,1.85052363e-04,6.73256050e-05], [-0.00292639,-0.0084904,-0.00337932,-0.00014984,0.0001385]])

with open('file.txt', 'w') as f:
    for row in M:
        # 单独设置该行的输出行宽
        f.write(np.array2string(row, linewidth=200))
        f.write('\n')

调整linewidth的值时,只要确保它大于你矩阵行转换成字符串后的总长度,就能避免自动换行的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:43:46