NumPy数据存取与函数

  一、数据的CSV文件存取

  CSV文件:

  CSV(Comma-Separated Value,逗号分隔值)

  CSV是一种常见的文件格式,用来存储批量数据。

  将数据写入CSV文件的方法是savetxt

    np.savetxt(frame,array,fmt='%.18e',delimiter=None)

    frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。

    array:存入文件的数组。

    fmt:写入文件的格式,例如:%d %.2f %.18e(默认)

    delimiter:分割字符串,默认是任何空格。

1 import numpy as np
2 a = np.arange(100).reshape(5,20)
3 np.savetxt("a.csv",a,fmt="%d",delimiter=",")

    CSV文件读入到NumPy中的数组中:

  np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)

  frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。

  dtype:数据类型,可选,默认np.float。

  delimiter:分割字符串,默认是任何空格。

  unpack:如果是True,读入属性将分别写入不同变量。

  CSV文件的局限性:

  CSV文件只能有效存储一维和二维数组

  np.savetxt()  np.loadtxt()只能有效存储一维和二维数组

  如何存取多维数组?

  a.tofile(frame,sep='',format='%s')

   frame:文件、字符串。

  sep:数据分割字符串,如果是空串,写入文件为二进制。

  format:写入数据的格式。

  np.fromfile(frame,dtype=float,count=-1,sep='')

  frame:文件、字符串。

  dtype:读取的数据类型。

  count:读入元素个数,-1表示读入整个文件。

    sep:数据分割字符串,如果是空串,写入文件为二进制。

 1 import numpy as np
 2 a = np.arange(100).reshape(5,10,2)
 3 a.tofile("b.dat",sep=",",format="%d")
 4 c = np.fromfile("b.dat",dtype=np.int,sep=",")
 5 print(c)
 6 c = np.fromfile("b.dat",dtype=np.int,sep=",").reshape(5,2,10)
 7 print(c)
 8 
 9 [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
10  25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
11  50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
12  75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]
13 [[[ 0  1  2  3  4  5  6  7  8  9]
14   [10 11 12 13 14 15 16 17 18 19]]
15 
16  [[20 21 22 23 24 25 26 27 28 29]
17   [30 31 32 33 34 35 36 37 38 39]]
18 
19  [[40 41 42 43 44 45 46 47 48 49]
20   [50 51 52 53 54 55 56 57 58 59]]
21 
22  [[60 61 62 63 64 65 66 67 68 69]
23   [70 71 72 73 74 75 76 77 78 79]]
24 
25  [[80 81 82 83 84 85 86 87 88 89]
26   [90 91 92 93 94 95 96 97 98 99]]]

  该方法需要读取时知道存入文件时数组的维度和元素类型。

  a.tofile()和np.fromfile()需要配合使用

  可以通过元数据文件来存储额外信息

   NumPy的便捷文件存取:

  np.save(fname,array)np.savez(fname,array) (把文件以压缩的形式存取)

    frame:文件名,以.npy为扩展名,压缩扩展名为.npz

         array:数组变量

  np.load(fname)

    frame:文件名,以.npy为扩展名,压缩扩展名为.npz

    a.npy文件把源信息保存在第一行。

posted @ 2017-08-07 17:56  心有琳系  Views(369)  Comments(0Edit  收藏  举报