有时候跑模型会将结果存放到一个文本文档里面,方便。
但是读取到内存中使用时不像.csv,.npy文件那样可以之接做运算,当然有一些情况也可以。
保存的结果只包含可转为数值的字符
如下图
可以直接使用numpy读取
import numpy as np
file = './data/test.txt'
import numpy as np
res = np.loadtxt(file)
结果如下:
但是此时这些数值还是string类型的,做运算的时候需要转换。
使用numpy的astype转为相关的类型即可。
abs_err = np.abs(res[:, 0].astype(float), res[:, 1].astype(float))
不用numpy直接读
res = []
with open(file, 'r') as f:
data = f.readlines()
for i, line in enumerate(data):
tmp = list(map(float, line.split())) #将str转为数值的类型
res.append(tmp)
当txt中的数据既有字符又有数字
如下图:
使用 np.load会报错,我们乖乖一行行解释:
import numpy as np
file = './data/test_two_column.txt'
# res_arr = np.loadtxt(file)
with open(file, 'r') as f:
data = f.readlines()
for i, line in enumerate(data):
# 第一行不要
if i and i == 1:
res_arr = np.array(line.split()) # 将list转为ndarray
res_arr.shape = (1, 2)
elif i > 0:
tmp = np.array(line.split()).reshape(1, 2)
res_arr = np.concatenate((res_arr, tmp), axis=0) # 拼接
abs_err = np.abs(res_arr[:, 0].astype(float), res_arr[:, 1].astype(float))
print(abs_err)
这里也一样,数值还是string类型的,做运算的时候需要转换。