np.savetxt()将numpy类型数字保存到txt文件中,探讨指定浮点数精度问题

文章讲述了在使用`np.savetxt()`函数处理混合类型数据(如[[str],[float]])时,遇到的格式化挑战,特别提到当包含float时,由于numpy的默认科学计数法可能导致精度丢失。作者提到不能直接使用%.4s格式,而是选择使用%s来保存,尽管这可能丢失部分精度。
摘要由CSDN通过智能技术生成

先回顾np.savetxt()的用法,如下

''' 
参数1:保存路径;
参数2:保存的数据;
参数3:指定格式化,%d为保存为整数,还有%s为保存为字符串形式;
参数4:指定分隔符,此处指定的为英文逗号,可以换成你想要的任意符号
'''
np.savetxt('data/task.txt', nparray_data, fmt="%d", delimiter=",")

问题:
若参数nparray_data中是混合类型,如[[str],[float]],那么保存过程中,无法使用格式化"%.f""%d"的,只能使用"%s”

但使用"%s"存在一个问题,若[[str],[float]]中的float类型的数需要按指定精度保存,那么只能单独使用格式化符,如"%s, %.4s"。

但是注意,numpy往往会默认使用科学计数法,所以会默认将数字float转换为字符串(数字过长会使用科学计数法),而使用"%.4s"保存的时候,会默认从前到后截取,此时容易遗漏e

# 如float类型数字为
f = 0.12345688888889
# f的科学技术法为1.2345688888889e-14,若使用"%.4s"截取
# 那么会得到1.234,显然不是原来的值。

这个问题我也没有很好解决。只能默认使用"%s", 而不使用"%.4s",因为即便是保存了很长的科学技术法形式,也不影响后续的读取。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用np.savetxt函数来保存两个数字在一行。 示例代码如下: ``` import numpy as np # 定义要保存的数据 data = [[1, 2], [3, 4]] # 使用np.savetxt函数保存数据 np.savetxt('data.txt', data, fmt='%d', delimiter=',') ``` 这样就可以将两个数字保存在同一行了。fmt参数用于指定数据的格式,在这里使用%d表示保存整数。delimiter参数用于指定数据之间的分隔符,在这里使用','表示使用逗号作为分隔符。 希望这能帮到你! ### 回答2: np.savetxt函数可以用来保存数据为文本文件,使得两个数字保存在一行。 具体的操作是,首先需要导入numpy库,使用该库提供的函数来进行文件保存。 接着,我们可以使用np.savetxt函数来保存两个数字。该函数的第一个参数是文件名,用来指定保存文件名称和路径。第二个参数是保存的数据,可以是数组、列表或矩阵等。在我们的例子,由于只有两个数字,可以使用一个数组来保存。第三个参数是格式字符串,用来指定数据的格式。在我们的例子,可以使用"%d"表示保存整数数据。最后,使用np.savetxt函数来保存文件。 具体代码如下: import numpy as np data = np.array([1, 2]) # 两个数字保存在一个数组 np.savetxt("data.txt", data, fmt="%d") # 保存数据为文本文件,格式为整数 以上的代码会将数组[1,2]保存到data.txt文件,并且两个数字保存在一行。如果想要在文件保存多行数据,可以使用多维数组或多个数组来保存,并适当调整保存数据的格式。 希望以上回答对您有帮助。 ### 回答3: np.savetxt函数可以用于保存两个数字在一行。以下是一个示例代码: ```python import numpy as np # 创建包含两个数字的数组 arr = np.array([1, 2]) # 使用np.savetxt函数保存数组到文本文件 np.savetxt('output.txt', arr, fmt='%d', delimiter=' ') print("保存成功!") ``` 在上述代码,我们首先创建了一个包含两个数字1和2的一维数组。然后,我们使用np.savetxt函数将数组保存到名为output.txt的文本文件np.savetxt函数的第一个参数是保存文件的路径,第二个参数是要保存的数组。fmt参数用于控制保存数字的格式,%d表示以整数形式保存。delimiter参数用于指定数字之间的分隔符,在这里我们使用空格进行分隔。 运行上述代码后,会在当前工作目录下创建一个名为output.txt的文本文件,其保存数字"1 2"。最后,输出"保存成功!"表示保存操作已成功执行。 希望以上内容对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值