Python 在.CSV文件中保存/加载数据的最佳方法

Python 在.CSV文件中保存/加载数据的最佳方法,python,pandas,csv,numpy,numeric,Python,Pandas,Csv,Numpy,Numeric,我正在尝试将一个包含2个ndarrays和一个int的元组列表保存并加载到.csv文件中 在我当前的实现中,当我保存并加载列表l时,恢复的列表中出现了一些错误,顺序为10^-10。是否有更精确地保存和恢复值的方法?我也希望大家能对我的代码发表意见。谢谢 这就是我现在拥有的: def save_l(l,path): tup=() for X in l: u=X[0].reshape(784*9) v=X[2]*np.ones(1) w

我正在尝试将一个包含2个
ndarrays
和一个
int
的元组列表保存并加载到
.csv
文件中

在我当前的实现中,当我保存并加载列表l时,恢复的列表中出现了一些错误,顺序为
10^-10
。是否有更精确地保存和恢复值的方法?我也希望大家能对我的代码发表意见。谢谢

这就是我现在拥有的:

def save_l(l,path):
    tup=()
    for X in l:
        u=X[0].reshape(784*9)
        v=X[2]*np.ones(1)
        w=np.concatenate((u,X[1],v))
        tup+=(w,)
    L=np.row_stack(tup)
    df=pd.DataFrame(L)
    df.to_csv(path)

def load_l(path):
    df=pd.read_csv(path)
    L=df.values
    l=[]
    for v in L:
        tup=()
        for i in range(784):
            tup+=(v[9*i+1:9*(i+1)+1],)
        T=np.row_stack(tup)
        Q=v[9*784+1:10*784+1]
        i=v[7841]
        l.append((T,Q,i))
    return(l)

您遇到的问题可能是由于在保存和加载期间缺少.csv文件保护

使用上下文管理器是确保文件在所有数据完全保存/加载之前处于锁定状态的一种好方法。这样,在系统因任何原因停止执行时,您不会丢失任何数据,因为所有结果都会在可用时保存

我建议将
-一起使用,它的主要用途是异常安全地清理内部使用的对象(在本例中是.csv)。换句话说,with确保关闭文件、释放锁、恢复上下文等

with open("myfile.csv", "a") as reference:           # Drop to csv w/ context manager
     df.to_csv(reference, sep = ",", index = False)  # Same goes for read_csv
# As soon as you are here, reference is closed

如果您尝试此操作但仍然看到错误,则这不是由于保存/加载问题造成的。

csv
是一个文本文件。浮点值将被舍入或剪裁。如果需要保持精度,请不要使用此格式
ndarray
具有
np.save
np.load
,这将保存二进制数据,即内存中使用的字节。