Python 如何将numpy.savetxt生成的文本居中对齐?

Python 如何将numpy.savetxt生成的文本居中对齐?,python,numpy,alignment,center,Python,Numpy,Alignment,Center,我使用一个小包装器来自动生成标题名,并为可读的输出创建一些智能的宽度对齐。现在有一个更简单的解决方案 我想知道如何指定宽度并使输出文本与中心对齐,而不是像文档中所示左对齐 从numpy.savetxt文档中,我看到以下信息: 文档指出了一个更“详尽的资源”,但其中的信息与对齐信息不兼容 各种路线选项的含义如下: 选项含义 “”强制字段在可用空间内右对齐(这是数字的默认值)。 “=”强制将填充放置在符号(如果有)之后但数字之前。这用于打印格式为“+000000120”的字段。此对齐选项仅对数字类型

我使用一个小包装器来自动生成标题名,并为可读的输出创建一些智能的宽度对齐。现在有一个更简单的解决方案

我想知道如何指定宽度并使输出文本与中心对齐,而不是像文档中所示左对齐

numpy.savetxt
文档中,我看到以下信息:

文档指出了一个更“详尽的资源”,但其中的信息与对齐信息不兼容

各种路线选项的含义如下:

选项含义
“”强制字段在可用空间内右对齐(这是数字的默认值)。
“=”强制将填充放置在符号(如果有)之后但数字之前。这用于打印格式为“+000000120”的字段。此对齐选项仅对数字类型有效。
“^”强制字段在可用空间内居中。

不兼容是因为savetxt不接受
“^”
作为有效的格式字符。有谁能解释一下如何在“numpy.savetxt”中指定格式,使输出居中对齐吗?

您可以使用
格式组合更复杂的格式选项,包括居中的
“^”
标志:

import numpy as np
a = np.ones((3,3))*100
a[1,1]=111.12321
a[2,2]=1
np.savetxt('tmp.txt',a, fmt='{:*^10}'.format('%f'))
给予:

****100.000000**** ****100.000000**** ****100.000000****
****100.000000**** ****111.123210**** ****100.000000****
****100.000000**** ****100.000000**** ****1.000000****

你把
******
包括进来,我有点困惑。我检查了一下,它确实回答了我的问题。非常感谢。最后我使用了
fmt='{0:^{1}}'。格式(fmtname,fieldlen)
其中
fmtname
np.savetxt
的公认格式规范之一。是的,我只是用它来描述集中效果。。。非常感谢。
Option  Meaning
'<'     Forces the field to be left-aligned within the available space (this is the default for most objects).
'>'     Forces the field to be right-aligned within the available space (this is the default for numbers).
'='     Forces the padding to be placed after the sign (if any) but before the digits. This is used for printing fields in the form ‘+000000120’. This alignment option is only valid for numeric types.
'^'     Forces the field to be centered within the available space.
import numpy as np
a = np.ones((3,3))*100
a[1,1]=111.12321
a[2,2]=1
np.savetxt('tmp.txt',a, fmt='{:*^10}'.format('%f'))
****100.000000**** ****100.000000**** ****100.000000****
****100.000000**** ****111.123210**** ****100.000000****
****100.000000**** ****100.000000**** ****1.000000****