本章主要介紹的是數據的CSV文件存取和多維數據的存取。
一、數據的CSV文件存取
1、CSV的寫文件:
np.savetxt(frame, array, fmt='%.18e', delimiter=None)
- frame:文件、字符串或產生器,可以是.gz或.bz的壓縮文件;
- array:存入文件的數組;
- fmt:寫入文件的格式,例如:%d、%.2f、%.18e;
- delimiter:分割字符串,默認是任何空格。
舉個栗子:用Numpy生成5 * 20的二維數組,並且把該數組保存到a.csv的文件中:
import numpy as np a = np.arange(100).reshape(5, 20) np.savetxt('a.csv', a, fmt='%d', delimiter=',')
2、CSV的讀文件:
np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
- frame:文件、字符串或產生器,可以是.gz或.bz的壓縮文件;
- dtype:數據類型,可選;
- delimiter:分割字符串,默認是任何空格;
- unpack:如果True,讀入屬性將分別寫入不同變量。
舉個栗子:讀a.csv的文件:
b = np.loadtxt('a.csv', dtype=np.int, delimiter=',') print(b) [[ 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 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 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 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]]
備注:但是CSV文件有自身的局限性,只能有效的存儲一維和二維數組。
二、多維數據的存取
常規文件的存取:
1、寫文件:
a.tofile(frame, sep=' ', format='%s')
- frame:文件、字符串;
- sep:數據分割字符串,如果是空串,寫入文件為二進制;
- format:寫入數據格式。
舉個栗子:將三維數組寫入b.dat中:
import numpy as np a = np.arange(100).reshape(5, 10, 2) a.tofile("b.dat", sep=",", format='%d')
2、讀文件:
np.fromfile(frame, dtype=float, count=-1, sep=' ')
- frame:文件、字符串;
- dtype:讀取的數據類型;
- count:讀入元素個數,-1表示讀入整個文件;
- sep:數據分割字符串,如果是空串,讀入文件為二進制。
舉個栗子:將b.dat文件讀文件:
c = np.fromfile("b.dat", dtype=np.int, sep=",").reshape(5, 10, 2) print(c)
[[[ 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 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] [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 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]]]
Numpy的便捷文件存取:
1、寫文件:
np.save(frame, array) 或np.savez(frame, array)
- frame:文件名,以.npy為擴展名,壓縮擴展名為.npz;
- array:數組變量。
2、讀文件:
np.load(frame)
- frame:文件名,以.npy為擴展名,壓縮擴展名為.npz;
舉個栗子:
a = np.arange(100).reshape(5, 10, 2) np.save("a.npy", a) b = np.load("a.npy") print(b)
備注說明:Numpy的讀文件不需要知道數據的維度即可還原成原先的維度,但是常規讀文件時必須指定文件的維度。