如何在Python中将numpy数组列表写入TXT文件并复用?
解决numpy数组列表写入文件后复用的问题
你之前的写法把numpy数组转成普通字符串写入文件,读取后得到的是字符串而非原数组,自然没法用数组的切片方式操作,才会触发TypeError: string indices must be integers错误。下面是几种靠谱的解决方法:
方法一:用numpy自带的savez/load(推荐,专门处理numpy数组)
这种方法可以直接保存多个numpy数组,且能完美恢复原数据结构:
写入代码
import numpy as np # 假设df是你的numpy数组列表,比如 df = [np.array([1,2,3]), np.array([4,5,6])] np.savez("read_files.npz", *df)
读取代码
import numpy as np loaded_data = np.load("read_files.npz") # 恢复成原来的数组列表 df = [loaded_data[key] for key in loaded_data] # 现在可以正常切片,比如 df[0][1] 会得到2
方法二:用pickle序列化(适合保存任意Python对象)
如果你的列表里除了numpy数组还有其他Python对象,pickle是更通用的选择:
写入代码
import pickle with open("read_files.pkl", "wb") as f: pickle.dump(df, f)
读取代码
import pickle with open("read_files.pkl", "rb") as f: df = pickle.load(f) # 直接复用原数组列表,比如 df[1][0] 会得到4
方法三:强制用TXT文件存储(适合需要可读文本的场景)
如果必须用TXT格式,需要给每个数组加分隔标记,读取时按标记拆分并恢复数组:
写入代码
import numpy as np with open("read_files.txt", "w") as f: for arr in df: np.savetxt(f, arr) f.write("---\n") # 用---作为数组之间的分隔符
读取代码
import numpy as np df = [] current_arr_lines = [] with open("read_files.txt", "r") as f: for line in f: stripped_line = line.strip() if stripped_line == "---": if current_arr_lines: # 将收集的行转为numpy数组 arr = np.loadtxt(current_arr_lines) df.append(arr) current_arr_lines = [] else: current_arr_lines.append(stripped_line) # 处理最后一个数组 if current_arr_lines: df.append(np.loadtxt(current_arr_lines)) # 现在可以正常进行切片操作
内容的提问来源于stack exchange,提问作者yessir22
相关产品推荐
相关产品推荐

