【Python學習】NumPy文件存取

59458991 8年前發布 | 48K 次閱讀 Python開發

來自: 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[ ]:</pre>

 本文由用戶 59458991 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!