- # 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[ ]:
版权声明:本文为博主原创文章,未经博主允许不得转载。