【Python學習】NumPy文件存取
來自: http://blog.csdn.net//chenriwei2/article/details/44955569
# coding: utf-81. 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[ ]:</pre>