在numpy.savetxt中设置fmt选项

时间:2013-06-11 11:50:59

标签: python arrays string numpy save

我正在查看numpy.savetxt,并且卡在fmt选项中。

我尝试查看here以及下面链接中的引用,可以用于fmt选项排序的所​​有字母让我对正在发生的事情有一个大致的了解。

我不明白的是,如果需要%符号,并且在给定here的示例中,我该如何解释10.5号? 如果“f”是关于设置浮点数,那么它是怎么来的10.5(那么我可能不知道浮点是如何设置的......)。

2 个答案:

答案 0 :(得分:43)

您可以通过多种方式使用fmt参数,以下是一些示例。

import numpy as np
a = np.array([[11,12,13,14],
              [21,22,23,24]])

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

2)向右对齐添加字符。

使用空格:np.savetxt('tmp.txt',a, fmt='% 4d')

  11   12   13   14
  21   22   23   24

使用零:np.savetxt('tmp.txt',a, fmt='%04d')

0011 0012 0013 0014
0021 0022 0023 0024

3)向左对齐添加字符(使用“-”)。

使用空格:np.savetxt('tmp.txt',a, fmt='%-4d')

11   12   13   14  
21   22   23   24  

您也可以用来编写表达式,例如(注意表达式中的条目数与数组中的列数相同:

4)一般示例:np.savetxt('tmp.txt',a, fmt='%1.1f + %1.1f / (%1.1f * %1.1f)')

11.0 + 12.0 / (13.0 * 14.0)
21.0 + 22.0 / (23.0 * 24.0)

答案 1 :(得分:3)

link可能会有所帮助。

从链接:

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" | "%"
  

宽度是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容确定。

     

如果没有给出明确的对齐方式,则在宽度字段前面加零(&#39; 0&#39;)字符可以为数字类型启用符号识别的零填充。这相当于&#39; 0&#39;的填充字符。对齐类型为&#39; =&#39;。

     

精度是一个十进制数,表示在用&f; f&#39;格式化的浮点值的小数点后应显示多少位数。和&#39; F&#39;,或者用&#39; g&#39;格式化的浮点值的小数点前后或者&#39; G&#39;。对于非数字类型,该字段表示最大字段大小 - 换句话说,将使用字段内容中将使用的字符数。整数值不允许精度。