将txt文件中的数据读取为numpy数组或者list

有时候跑模型会将结果存放到一个文本文档里面,方便。
但是读取到内存中使用时不像.csv,.npy文件那样可以之接做运算,当然有一些情况也可以。

保存的结果只包含可转为数值的字符

如下图
test1
可以直接使用numpy读取

import numpy as np
file = './data/test.txt'
import numpy as np
res = np.loadtxt(file)

结果如下:
res

但是此时这些数值还是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中的数据既有字符又有数字

如下图:
test2
使用 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类型的,做运算的时候需要转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值