【Python学习】NumPy文件存取

59458991 8年前

来自: 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[ ]: