【Python】list 类型的保存与读取
1. 介绍
对于np.array是格式化的数据,其有配套的保存与读取函数。但是对于list其可能是不等长的,因此没有发现可用的函数去进行list数据的保存与读取。
针对以下问题,在 2 中代码进行实现:
- 数据的格式为list类型,其中每个元素也是一个list类型数据,里面的元素是浮点型。
2. 代码实现
2.1 每个 list 的长度相同
可以直接转成array类型再存储起来,可以仿照np.array的保存、读取操作。
# save
np.savetxt( "X.txt",np.array(X))
# load
X = list(np.loadtxt("X.txt"))
2.2 每个list元素大小不同
如果 list 数据里的元素维度不同的话,这样转成array保存是会报错的。需要改成这样。
1)保存:
file = open( "X.txt", 'w')
for fp in X:
file.write(str(fp))
file.write('\n')
file.close()
2)读取:读取的时候读到的数据都是 list 的没错,但是里面的元素变成了字符串类型了,这时候需要每行的字符串数据再转成 list。
file = open("/X.txt", 'r')
X = file.readlines()#直接每行读取
n=len(X)
for i in range(n):
X[i] = X[i].strip()#去除后面的换行元素
X[i]=X[i].strip("[]")#去除列表的[]符号
X[i] = X[i].split(",")#根据‘,’来将字符串分割成单个元素
X[i] = list(map(float, X[i]))#分离出来的单个元素也是字符串类型的,将其转成浮点
########下面的代码用来处理原数据中含有nan值的情况,将nan置0,如果无nan值或者不需要转换可省略#####
narry=np.array(X[i])
where_are_nan = np.isnan(narry)
narry[where_are_nan] = 0
X[i]=narry.tolist()
file.close()