【问题标题】:combining python lists in savetxt在 savetxt 中组合 python 列表
【发布时间】:2015-03-13 15:14:02
【问题描述】:

我有 2 个要使用 np.savetxt() 并排保存的 python 列表。

我试过了:

np.savetxt('./filename.txt',np.hstack([list1,list2]),fmt=['%f','%f'])

但我收到错误消息

raise AttributeError('fmt has wrong shape.  %s' % str(fmt))
AttributeError: fmt has wrong shape.  ['%f', '%f']

我不知道它是否相关,但列表是十进制的。十进制格式。

请问我做错了什么?


编辑:我最初说的是“vstack”,但我的意思是“hstack”。

【问题讨论】:

  • 您为什么要尝试将数组传递给 fmt 关键字参数?
  • 我试图在这里遵循解决方案stackoverflow.com/questions/16317840/…
  • @user1551817 该示例有效,因为传递给 format 的列表与数据数组的一行大小相同。
  • 添加到@Carsten 的评论/答案。如果您希望至少一列具有与其他列不同的格式,则仅对 fmt 关键字使用列表。在这种情况下,您必须为每列提供一个包含格式字符串的列表。
  • @user1551817,只需检查np.hstack([list1,list2])np.vstack([list1,list2]) 的输出即可了解问题所在。如果您使用np.vstack([list1,list2]).T,您确实会有一个形状为nx2 的二维数组,并且您不会看到此错误。

标签: python numpy decimalformat


【解决方案1】:

只需将单个值传递给fmt,如下所示:

np.savetxt('./filename.txt',np.vstack([list1,list2]),fmt='%f')

例子:

import decimal, numpy as np
a = np.array([decimal.Decimal("1.0"),
              decimal.Decimal("2.0"),
              decimal.Decimal("3.0")],
             dtype=np.dtype(decimal.Decimal))
b = a + 1
np.savetxt('./filename.txt',np.vstack([a, b]),fmt='%f')

生成的文件如下所示:

1.000000 2.000000 3.000000
2.000000 3.000000 4.000000

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2010-12-02
    相关资源
    最近更新 更多