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

如何将Numpy ndarray按指定行格式写入文本文件?

如何将NumPy数组按行写入文本文件?

你手里有这样一个NumPy ndarray:

[[1 2 3 4] [5 6 7 8] [9 10 11 12]]

想要把它写入文本文件,让每行对应原数组的一行,但你原来的代码运行后所有元素都挤在了同一行。先看看你原来的代码:

width, height = matrix.shape
with open('file.txt', 'w') as foo:
    for x in range(0, width):
        for y in range(0, height):
            foo.write(str(matrix[x, y]))
foo.close()

问题出在两个地方:一是你搞反了matrix.shape的顺序(NumPy里shape是(行数, 列数),所以width其实是行数,height是列数,虽然循环可能没报错,但逻辑上容易混淆);二是你既没给元素之间加空格,也没在每行结束后写入换行符,所以所有元素都连在了一起。

下面给你两种解决方法:

方法1:修改你的原循环代码

调整循环逻辑,把每行的元素用空格拼接成字符串,写完一行后加换行,同时用更直观的遍历方式:

import numpy as np
matrix = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
rows, cols = matrix.shape  # 纠正shape的顺序,rows是行数,cols是列数
with open('file.txt', 'w') as foo:
    for row in matrix:  # 直接遍历每一行,比用索引更清晰
        # 把当前行的每个元素转成字符串,用空格连接
        row_content = ' '.join(map(str, row))
        foo.write(row_content + '\n')
# 注意:with语句会自动关闭文件,不需要手动调用foo.close()

方法2:用NumPy自带的savetxt方法(更简洁)

NumPy已经封装了专门的数组写入方法,一行代码就能搞定需求:

import numpy as np
matrix = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
np.savetxt('file.txt', matrix, fmt='%d', delimiter=' ')
  • fmt='%d':指定输出格式为整数(如果你的数组是浮点数,可以改成%f或者其他格式)
  • delimiter=' ':指定元素之间用空格分隔
  • 这个方法会自动按行写入数组,每行对应原数组的一行,完全符合你的要求。

这样修改后,生成的file.txt内容就是你想要的:

1 2 3 4
5 6 7 8
9 10 11 12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:30:03