Python中numpy.savetxt如何将首行也缩进一个制表符

A = np.array([[930,1568,33],[945,1566,58],[1000,1599,88]])
np.savetxt(‘test.txt’, A, fmt=’%.6s’, header=’’, newline=’\n\t’,delimiter=’\t\t’)
newline=’\n\t’可以将第二行及以后都缩进一个 table 那么第一行的怎么办?
Python中numpy.savetxt如何将首行也缩进一个制表符

4 回复

或者有没有其他的方法?


要在使用 numpy.savetxt 保存数据时让首行(通常是表头)也缩进一个制表符,关键在于在写入文件时,先手动处理表头字符串,再写入数据部分。

numpy.savetxt 函数本身没有直接为表头添加缩进的参数。它的 header 参数只是在数据块之前写入一行字符串,但不会对该字符串应用 fmt 参数指定的格式(包括分隔符和缩进)。

因此,标准的做法是:

  1. 使用 numpy.savetxt 并设置 header='' 以避免其自动写入表头。
  2. 在调用 savetxt 之前或之后,手动打开文件,在文件开头写入一个制表符,然后写入你的表头行。

这里是一个清晰、完整的示例:

import numpy as np

# 1. 准备你的数据和表头
data = np.array([[1, 2.5, 'A'],
                 [3, 4.1, 'B'],
                 [5, 6.7, 'C']])
my_header = "Index\tValue\tLabel"  # 这是你想要作为表头的字符串

# 2. 指定保存的文件名
filename = 'indented_data.tsv'

# 3. 先打开文件,写入带缩进的表头
with open(filename, 'w') as f:
    f.write('\t' + my_header + '\n')  # 在表头前添加一个制表符,然后换行

# 4. 然后,以“追加”模式打开同一个文件,使用 savetxt 写入数据
#    注意:设置 header='',分隔符设为制表符 '\t',格式根据需要调整
with open(filename, 'ab') as f:  # 使用 'ab' 模式以二进制追加,这是 savetxt 所期望的
    np.savetxt(f, data, delimiter='\t', fmt='%s', header='', comments='')
# 说明:
# - `delimiter='\t'` 确保数据列之间用制表符分隔,与表头一致。
# - `fmt='%s'` 是一个通用格式,适用于字符串、整数和浮点数。你可以为每列指定更精确的格式,例如 `fmt='%d\t%.2f\t%s'`。
# - `header=''` 和 `comments=''` 是为了防止 savetxt 添加任何额外的注释字符或空行。

运行这段代码后,生成的 indented_data.tsv 文件内容如下( 代表一个制表符):

→Index→Value→Label
1→2.5→A
3→4.1→B
5→6.7→C

核心要点savetxt 不控制表头格式,需要手动写入带缩进的表头。

没试过。但新版 numpy 可以使用 file handler,
o=open(“a.txt”,“w”)
o.write("\t")
np.savetxt(o,…)

谢谢帮助。

回到顶部