【Python学习】NumPy文件存取
59458991
9年前
来自: http://blog.csdn.net//chenriwei2/article/details/44955569
# coding: utf-8 # 1. tofile方法写入,fromfile方法读出。特点:二进制读写,不保存数组的形状和元素类型等信息。 # 读出的时候需要指定dtype和对读出的数组进行修改shape操作 # In[3]: import numpy as np a=np.arange(0,12) a.shape=3,-1 a.tofile("saved_a.bin")# 保存数据。 print a b=np.fromfile("saved_a.bin",dtype=np.int32)#读出的时候,需要指定类型,否则会出错 #注意这时候的b还是一维的。 print b.shape b.shape=3,-1 print b # 2. load 和save方法,是numpy专用的方法,用来保留二进制格式的数据。 # 相对于tofile和fromfile ,它会自动的处理元素类型和shape # In[7]: np.save("saved_b.npy",b) c=np.load("saved_b.npy") print c # 如果要保存多个对象,则用savez, # 其读出顺序为arr_0 arr_1 arr_2 ... # In[8]: np.savez("saved_all.npz",a,b,c)#写入多个对象 #读取多个对象 d=np.load("saved_all.npz") print d["arr_0"] print d["arr_1"] print d["arr_2"] # 3. 用savetxt() 和loadtxt() 读写一维或者二维数组的文本文件,通常用来读写csv格式的文本 # 默认用空格分隔 # In[12]: np.savetxt("a.txt",a) e=np.loadtxt("a.txt") print "默认:" print e np.savetxt("b.txt",b,fmt="%d",delimiter=",")#可以指定用整数的格式存储,用逗号分隔。 f=np.loadtxt("b.txt",delimiter=",") print "指定:" print f # 4. 针对首行或者首列不是数据的文件读取,通常采用:将文件读取为字符串数组,然后取出需要的部分,转为数值数组。 # # 如: 文本文件test.csv 为 # 姓名,年龄,体重 # 张三,20,120 # 李四,23,110 # In[14]: temp=np.loadtxt("test.csv",dtype=np.str,delimiter=",") data=temp[1:,1:].astype(np.float) print data # 如果只是首行不是数据,而其它都是标准格式的数据,那么也可以只需要先读取一行,然后再将文件传给loadtxt() # In[16]: g=open("test.csv") g.readline() data=np.loadtxt(g,dtype=np.str,delimiter=",") print data # In[ ]: