【问题标题】:use np.savetxt to save structured numpy array containing string and float使用 np.savetxt 保存包含字符串和浮点数的结构化 numpy 数组
【发布时间】:2015-09-29 07:03:50
【问题描述】:

我有一个包含字符串和浮点数的 numpy 结构化数组。我想将这个结构化数组原样保存到 csv 文件中。 我的程序的简化版是这样的。

    structured_array = np.zeros((1,), dtype=[('string','a20'),('float','f8')])
    structured_array['string'] = 'string'
    structured_array['float'] = 0.0
    np.savetxt('foo.csv', structured_array, delimiter=',',fmt='%s,%f')

我希望 foo.csv 中有 string,0.000000,但它给了我 b'string',0.000000 这个引号和这个 b 来自哪里?我怎样才能摆脱它?

我可以使用readline() 并手动摆脱它,但有什么聪明的方法可以做到这一点。

非常感谢。

【问题讨论】:

  • 我无法复制...我得到字符串,0.000000 你的脚本是否设置了某种编码?尝试 ('string','S20') 第一个字段
  • @DanPatterson 我可以复制,numpy 1.9.2,更改为“S20”没有效果。
  • @MatthewPlourde 我的版本是 1.7.x 这可能是 Unicode 差异问题吗?
  • 这看起来像open issue #4543

标签: arrays csv python-3.x numpy


【解决方案1】:

savetxt (...\lib\site-packages\numpy\lib\npio.py) 中的第 1087 行有

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

这表明列在写入之前已转换为字节(因此有 b 前缀。看来这无法更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2016-12-13
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多