可能的numpy值格式字符串有哪些?

z4bn682m  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(87)

在numpy中,许多函数都有一个字符串,可以作为一个额外的参数传递,以格式化numpy数组值。
例如,在numpy.loadtxt中,http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html
可以选择以下内容

"%10.5f"
"%.4e %+.4j"

它在文档中提到:
“fmt参数(%[flag]width[.precision]specifier)的进一步说明:“
具体有哪些可能的格式?
flagwidthprecisionspecifier的可能值是什么?
加分的人谁解释当他们可以混合和匹配... 'Iteration %d – %10.5f’在文档中提到...

bweufnob

bweufnob1#

np.savetxt使用老式的(Py2)%样式格式。关键行是:

for row in X:
    fh.write(asbytes(format % tuple(row) + newline))

其中formatfmt参数,或由其构造:

# `fmt` can be a string with multiple insertion points or a
# list of formats.  E.g. '%10.5f\t%10d' or ('%10.5f', '$10d')

(我对“10d”字符串感到困惑。是不是打错了?
本质上,如果字符串fmt中有足够的%,则按原样使用。如果它是一个列表,它用分隔符连接它们。如果是单一格式,则复制它并加入。
数组的行被转换为tuple,这是%的正常输入。
所以savetxt是直接的Python数字格式。
我认为这是唯一一个以这种方式运行的numpy函数。有一个单独的格式化程序来处理数组的print显示。

例如:
完全指定的fmt字符串:

In [22]: np.savetxt('text.txt',np.ones((2,4)),fmt='%s: %10d, %10.5fl %.4e')

In [23]: cat text.txt
1.0:          1,    1.00000l 1.0000e+00
1.0:          1,    1.00000l 1.0000e+00

直接将fmt用于整数元组:

In [24]: '%s: %10d, %10.5fl %.4e'%(1,1,1,1)
Out[24]: '1:          1,    1.00000l 1.0000e+00'

和一个浮点元组(注意改变第一个%s格式)

In [25]: '%s: %10d, %10.5fl %.4e'%(1.,1.,1.,1.)

Out[25]: '1.0:          1,    1.00000l 1.0000e+00'
k4ymrczo

k4ymrczo2#

可能的格式在Python标准库文档的格式规范迷你语言中列出。
宽度和精度是十进制整数。除非定义了最小字段宽度,否则字段宽度将始终与要填充的数据大小相同。
演示文稿类型包括:“B”|“c”|“d”|“e”|“E”|“f”|F|“g”|“G”|n|“O”|“s”|“x”|“X”|“%”

相关问题