gpt4 book ai didi

python - Numpy.savetxt 同时保存字符串和 float 并保持 float 的精度

转载 作者:行者123 更新时间:2023-11-28 18:39:41 26 4
gpt4 key购买 nike

我写了一个python脚本,

import numpy

a = 8.3
b = 8.29993191
c = abs(a - b)
print c
d = numpy.array(c)
e = ['value']
f = numpy.vstack((e, d))
print f
g = ['valuesssssssssssss']
h = numpy.vstack((g, d))
print h

numpy.savetxt('2k.csv', f, '%s', delimiter = ',')

这是输出,

6.8090000001e-05
[['value']
['6.809']]
[['valuesssssssssssss']
['6.8090000001e-05']]

显然,我要保存到 csv 文件中的 float 的精度取决于字符串的长度,因为我需要使用 '%s' 来同时保存字符串和 float 。

如何解决这个问题?

最佳答案

在这一行:

f = numpy.vstack((e, d))

vstack 正在将 d 的类型强制转换为 e 的类型。您可以通过打印 f.dtype 来检查这一点。

你应该像这样构建 f

f = np.zeros(1,dtype=('|S5, float64'))
f[0] = e[0],d

请参阅有关结构化数组的文档,特别是 this段落,如果您不理解上面的行。

打印f时,可以选择不同的格式说明符。使用 15 数字和科学记数法,您可以:

np.savetxt('2k.csv', f, fmt = ('%s','%.15e'),delimiter = ',')

生成的文件是

# cat 2k.csv
value,6.809000000096432e-05

要将数字保存在字符串下,请为 savetxt 使用自定义格式:

np.savetxt('2k.csv', f, fmt = '%s\n%.15e')

哪些输出:

# cat 2k.csv
value
6.809000000096432e-05

关于python - Numpy.savetxt 同时保存字符串和 float 并保持 float 的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27918247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com