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 参数指定的格式(包括分隔符和缩进)。
因此,标准的做法是:
- 使用
numpy.savetxt并设置header=''以避免其自动写入表头。 - 在调用
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,…)
谢谢帮助。

