【问题标题】:What are the possible numpy value format strings?什么是可能的 numpy 值格式字符串?
【发布时间】:2015-11-23 20:18:03
【问题描述】:

在 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’ 在文档中提到...

【问题讨论】:

  • 我想说您链接到的文档很好地涵盖了这一点;他们链接到的reference 更详细地介绍了这一点。我不确定你在这里还要求什么...
  • 感谢您指出额外的参考!在尝试了一些在 sprintf 上工作的方法之后,似乎有一些方法似乎不能以同样的方式在 numpy 数组上工作。例如,“%s”似乎失败了。

标签: python arrays numpy format


【解决方案1】:

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

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

其中format 是您的fmt 参数,或者由它构造:

# `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'

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多