# 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[ ]:
【Python学习】NumPy文件存取
最新推荐文章于 2025-06-10 10:33:03 发布