Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy.savetxt中设置fmt选项_Python_Arrays_String_Numpy_Save - Fatal编程技术网

Python 在numpy.savetxt中设置fmt选项

Python 在numpy.savetxt中设置fmt选项,python,arrays,string,numpy,save,Python,Arrays,String,Numpy,Save,我正在查看numpy.savetxt,我被困在fmt选项上 我试着查看下面链接中的参考,所有可用于fmt选项排序的字母让我大致了解了正在发生的事情 我不明白的是,是否需要%符号,在给出的示例中,我应该如何解释10.5数字? 如果“f”是关于设置浮点的,那么它为什么是10.5(同样,我可能不知道浮点是如何设置的…。知道只适用于1D或2D数组,一般的想法是: 当fmt是单个格式字符串时,它将应用于 阵列(一维或二维输入阵列) 当fmt是一系列格式化字符串时,它将应用于2D输入数组的每一列 我在这

我正在查看
numpy.savetxt
,我被困在
fmt
选项上

我试着查看下面链接中的参考,所有可用于
fmt
选项排序的字母让我大致了解了正在发生的事情

我不明白的是,是否需要
%
符号,在给出的示例中,我应该如何解释10.5数字? 如果“f”是关于设置浮点的,那么它为什么是10.5(同样,我可能不知道浮点是如何设置的…。

知道只适用于1D或2D数组,一般的想法是:

  • fmt
    是单个格式字符串时,它将应用于 阵列(一维或二维输入阵列)
  • fmt
    是一系列格式化字符串时,它将应用于2D输入数组的每一列
我在这里介绍一些使用以下输入数组的示例:

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')

2) 添加字符以右对齐

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

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

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

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

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" | "%"
format_spec::=[[fill]align][sign][[0][width][,][.precision][type]
填充::=
对齐::=“|”=“|”^”
符号::=“+”|“-“|”
宽度::=整数
精度::=整数
类型::=“b”|“c”|“d”|“e”|“e”|“f”|“f”|“g”|“n”|“o”|“s”|“x”|“%”
宽度是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定

如果没有给出明确的对齐方式,则在宽度字段前面加一个零('0')字符可以为数字类型启用符号感知的零填充。这相当于对齐类型为“=”的填充字符“0”

精度是一个十进制数字,指示对于使用“f”和“f”格式的浮点值,小数点后应显示多少位,对于使用“g”或“g”格式的浮点值,小数点前后应显示多少位。对于非数字类型,字段指示最大字段大小——换句话说,字段内容将使用多少个字符。整数值不允许使用精度


第4点描述了10和5 in%10.5f。五,。在你第一次链接到的文档中。愚蠢的我。。。谢谢你!直到你指出这些观点,我才意识到它们实际上是我问题的答案!因此,在这种情况下,字段是。那太好了!
11   12   13   14  
21   22   23   24  
31   32   33   34  
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 = '%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" | "%"