先回顾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"
,因为即便是保存了很长的科学技术法形式,也不影响后续的读取。