【问题标题】:convert numpy array to string with given format将numpy数组转换为给定格式的字符串
【发布时间】:2019-12-15 09:47:35
【问题描述】:

我想将 numpy 数组转换为具有给定格式的字符串表示形式。这个

from io import BytesIO
import numpy

data = numpy.random.rand(5)

s = BytesIO()
numpy.savetxt(s, data, "%.15e")
out = s.getvalue().decode()

print(out)
3.208726298090422e-01
6.817590490300521e-01
3.446035342640975e-01
7.871066165361260e-01
4.829308426574872e-01

有效,但savetxt 很慢。 tofile 大约快两倍,但我不知道如何让它与 BytesIO 一起工作。也许还有另一种选择。

有什么提示吗?

【问题讨论】:

  • savetxt 通过复制%... 以匹配data 中的列数来创建fmt 字符串。然后它执行fmt % tuple(row)。 Python 字符串格式化机制适用于单个数字(以及扩展的数字元组),而不适用于数组。
  • 只是好奇,不是使用 BytesIO,.npy 文件,即字节编码格式的 np.save 不会做你的工作吗?
  • @SayandipDutta 我不想要文件,我想要字符串。

标签: python arrays string numpy


【解决方案1】:

你可以这样做:

import numpy as np

data = np.random.rand(5)
out ='\n'.join(map('{:.15e}'.format, data))
print(out)

输出示例:

2.599889521964338e-02
8.936410392960248e-01
7.074905121425787e-01
4.318334519811902e-01
8.219700656108224e-01

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-05
    • 2016-03-10
    • 2021-04-26
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多