如何将(四舍五入)浮点数数组更改为字符串数组python
Posted
技术标签:
【中文标题】如何将(四舍五入)浮点数数组更改为字符串数组python【英文标题】:How to change array of (rounded) floats to array of strings python 【发布时间】:2015-07-22 00:31:42 【问题描述】:我有一些四舍五入为 2 位的数字数组,xx.xx(小数 = 2,使用 np.around),我想将其保存到文本文档中以供人类阅读。我想将这些“数字”数组更改为字符串数组,以便我可以将它们与其他字符串数组(行和列标题)组合并使用 numpy.savetxt 以便以可读的方式将我的数据保存到文本文档。如何将我的“数字”数组更改为字符串数组? (我相信数字是四舍五入的浮点数,应该仍然是浮点数,但不知道如何检查)
A=np.array([57/13, 7/5, 6/8])
产生数组([4.384615384615385, 1.4, 0.75 ])
B=A.astype('|S4' )
产生数组([b'4.38',b'1.4', b'0.75])。当我保存到 txt 时,b 仍然存在。
np.savetxt('my_file.txt', B, fmt="%s)
我如何摆脱 b's?
我知道他们在这里谈论 b 的 What does the 'b' character do in front of a string literal?,但我不知道如何摆脱它。
使用 .astype 不是必需的,只是似乎是一种好方法。
【问题讨论】:
Numpy converting array from float to strings的可能重复 @Mark 你可以查看np.char.array()
是否需要使用 astype 来解决问题?
【参考方案1】:
在您的具体情况下,最好使用np.savetxt(fname, data, fmt='%0.2f')
,其中data
是您的原始浮点数组。
fmt
说明符是 sprintf-style format string。 %0.2f
指定数字将显示为浮点数(f
- 与科学记数法相反)并在小数点左侧(0
)和右侧的 2 个字符格式化小数点。
例如:
import numpy as np
a = np.array([57./13, 7./5, 6./8])
np.savetxt('out.txt', a, fmt='%0.2f')
生成的out.txt
文件将如下所示:
4.38
1.40
0.75
【讨论】:
谢谢,这很有帮助;但是我的输出看起来像 4.381.400.75(都在一行中,没有空格)。 @Mark - 那是因为它是一维数组。如果您希望它是二维列向量,请保存np.column_stack([your_data])
或your_data[:,None]
。以上是关于如何将(四舍五入)浮点数数组更改为字符串数组python的主要内容,如果未能解决你的问题,请参考以下文章