我正在查看numpy.savetxt
,并且被困在这个fmt
选项上。
我尝试查看此处以及链接下方的参考,所有可用于fmt
选项排序的字母让我大致了解正在发生的事情。
我不明白是否需要该符号,并且在此处%
给出的示例中,我应该如何解释 10.5 数字?如果“f”是关于设置浮点数,那么它怎么会是 10.5(再说一遍,我可能不知道浮点数是如何设置的……)。
知道np.savetxt
仅适用于 1D 或 2D 数组,一般的想法是:
fmt
是单个格式化字符串,它适用于数组中的所有元素(一维或二维输入数组)fmt
是一系列格式化字符串,它适用于二维输入数组的每一列我在这里展示一些使用以下输入数组的示例:
import numpy as np
a = np.array([[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34]])
1)设置浮点精度:np.savetxt('tmp.txt', a, fmt='%1.3f')
11.000 12.000 13.000 14.000
21.000 22.000 23.000 24.000
31.000 32.000 33.000 34.000
2)添加字符以右对齐。
带空格:np.savetxt('tmp.txt', a, fmt='% 4d')
11 12 13 14
21 22 23 24
31 32 33 34
带零:np.savetxt('tmp.txt', a, fmt='%04d')
0011 0012 0013 0014
0021 0022 0023 0024
0031 0032 0033 0034
3) 向左对齐添加字符(使用“ -
”)。
带空格:np.savetxt('tmp.txt', a, fmt='%-4d')
11 12 13 14
21 22 23 24
31 32 33 34
4) 当fmt
是一系列格式化字符串时,2D 输入数组的每一行根据 处理fmt
:
fmt
作为单个格式化字符串中的序列
fmt = '%1.1f + %1.1f / (%1.1f * %1.1f)'
np.savetxt('tmp.txt', a, fmt=fmt)
11.0 + 12.0 / (13.0 * 14.0)
21.0 + 22.0 / (23.0 * 24.0)
31.0 + 32.0 / (33.0 * 34.0)
fmt
作为格式化字符串的迭代器:
fmt = '%d', '%1.1f', '%1.9f', '%1.9f'
np.savetxt('tmp.txt', a, fmt=fmt)
11 12.0 13.000000000 14.000000000
21 22.0 23.000000000 24.000000000
31 32.0 33.000000000 34.000000000
此链接可能会有所帮助。
从链接:
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= integer
precision ::= integer
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
宽度是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。
当没有给出明确的对齐方式时,在宽度字段前面加上一个零 ('0') 字符会启用数字类型的符号感知零填充。这等效于填充字符“0”,对齐类型为“=”。
精度是一个十进制数,表示在使用“f”和“F”格式的浮点值的小数点后应显示多少位,或在使用“g”或格式的浮点值的小数点前后显示多少位'G'。对于非数字类型,该字段指示最大字段大小 - 换句话说,从字段内容中将使用多少个字符。整数值不允许精度。