numpy数组输出到文件时出现多余换行

17 投票
1 回答
6452 浏览
提问于 2025-04-18 01:21

我有一些很长的向量,像下面这样:

a = np.array([ 57.78307975,  80.69239616,  80.9268784,   62.03157284,  61.57220483,  67.99433377,  68.18790282])

当我用下面的方式把它打印到文件里:

outfile.write(str(a))
# or
outfile.write(np.array_str(a))

它会自动把中间的部分换行,这样向量就占用了两行:

[ 57.78307975  80.69239616  80.9268784   62.03157284  61.57220483
  67.99433377  68.18790282]

换行的宽度是66。我不太确定这个值是否和终端屏幕的宽度有关。

我只想看到向量在一行里打印出来。我该怎么做呢?

1 个回答

23

这是因为默认的打印选项“行宽”是75:

>>> np.get_printoptions()['linewidth']
75

如果你想关闭换行,可以通过 np.set_printoptions 将行宽设置为无限:

>>> str(a)
'[57.78307975 80.69239616 80.9268784  62.03157284 61.57220483 67.99433377\n 68.18790282]'
>>> np.set_printoptions(linewidth=np.inf)
>>> str(a)
'[57.78307975 80.69239616 80.9268784  62.03157284 61.57220483 67.99433377 68.18790282]'

如果你只想临时改变一次,而不想修改全局设置:

>>> np.array2string(a, max_line_width=np.inf)
'[57.78307975 80.69239616 80.9268784  62.03157284 61.57220483 67.99433377 68.18790282]'

撰写回答