如何将(圆形)浮点数组更改为字符串数组python

时间:2015-07-22 00:31:42

标签: python arrays string numpy save

我有一些数字的数组,四舍五入到2位,xx.xx(小数= 2,使用np.around),我想保存到文本文档供人阅读。我想将这些'number'数组更改为字符串数组,以便我可以将它们与其他字符串数组(行和列标题)结合使用,并使用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?

我知道他们在这里谈论b What does the 'b' character do in front of a string literal?,但我不知道如何摆脱它。

使用.astype不是必需的,这似乎是一种很好的方法。

1 个答案:

答案 0 :(得分: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