python - ndarray array2string 输出格式

标签 python numpy numpy-ndarray

我知道这是一个简单的问题,但只能在 SO 上找到部分答案,并且无法从 Python 或 Numpy 文档中弄清楚如何做。我确信它已记录在案,我只是不明白。

我需要使用固定格式打印/写入(13.7e 处有 6 个字段)。我需要打印的数组可能有 4、8、12 或更多值。我找到了 np.array2string,这几乎就是我所需要的。

  • 有没有办法消除前导和尾随的[]
  • 同样,有没有办法避免 2nd 和 2nd 的缩进 以下几行?

解决方案不必使用array2string。这是我发现控制 ndarray 打印/写入格式的最简单的事情。我对任何解决方案持开放态度。 :-)

这是我的一个简单示例,用于演示我想要的行为以及我得到的结果:

>>> import numpy as np
>>> foo = np.arange(4.0)
>>> # this shows desired output with 4 values
>>> print( ('%13.7e'*4) % (foo[0], foo[1], foo[2], foo[3]) )
0.0000000e+001.0000000e+002.0000000e+003.0000000e+00
>>> print ( np.array2string(foo, separator='', formatter={'float_kind':'{:13.7e}'.format}) )
[0.0000000e+001.0000000e+002.0000000e+003.0000000e+00]
>>> foo = np.arange(12.0)
>>> print ( np.array2string(foo, separator='', max_line_width=80, formatter={'float_kind':'{:13.7e}'.format}) )
[0.0000000e+001.0000000e+002.0000000e+003.0000000e+004.0000000e+005.0000000e+00
 6.0000000e+007.0000000e+008.0000000e+009.0000000e+001.0000000e+011.1000000e+01]
>>> # this shows desired output with 12 values
>>> print( ('%13.7e'*6) % (foo[0], foo[1], foo[2], foo[3], foo[4], foo[5]) )
0.0000000e+001.0000000e+002.0000000e+003.0000000e+004.0000000e+005.0000000e+00
>>> print( ('%13.7e'*6) % (foo[6], foo[7], foo[8], foo[9], foo[10], foo[11]) )
6.0000000e+007.0000000e+008.0000000e+009.0000000e+001.0000000e+011.1000000e+01

最佳答案

np.array2string 的输出只是一个字符串。您可以使用普通的字符串方法对其进行格式化。例如,您可以去掉前括号/尾括号并使用以下命令替换空格:

foo = np.arange(12.)
s = (np.array2string(foo, 
         separator='', 
         formatter={'float_kind':'{:13.7e}'.format}, 
         max_line_width=80).strip('[]').replace(' ', ''))
print(s)
# prints:
0.0000000e+001.0000000e+002.0000000e+003.0000000e+004.0000000e+005.0000000e+00
6.0000000e+007.0000000e+008.0000000e+009.0000000e+001.0000000e+011.1000000e+01

关于python - ndarray array2string 输出格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892742/

相关文章:

python - Web 推送通知有效负载数据为空

python - Tkinter OOP 按钮导致 AttributeError 我不明白

python - cross_from_above 在未来的 matplotlib 中已弃用...替换函数?

python - 可将屏蔽 View 写入记录数组

python - 为什么列表没有将字典数据附加到我的列表中?

Python 转义 "{}"符号

python - 基于区域的图像检测与状态验证

numpy - 如何有效地为多个参数准备矩阵(二维数组)?

python - numpy 数组中的几个元素

python - NumPy ndarrays 与 Python 的列表