如何将(四舍五入)浮点数数组更改为字符串数组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的主要内容,如果未能解决你的问题,请参考以下文章

如何在浮点数数组中创建一个由 1 组成的圆圈

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

如何在Java中将数字四舍五入到小数点后四位? [复制]

浮点数数组的音高检测

对浮点数数组进行排序[重复]

text 将文件夹的权限组更改为www-data组