You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:52:31