【Python学习】NumPy文件存取

# 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)