csv文件(comma-Separated Value,逗號分隔值):一種文件格式存儲批量數(shù)據(jù)的文件。
局限性:只能有效存儲一維和二維數(shù)組。
Numpy讀取和寫入函數(shù)
讀?。?code>np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
frame參數(shù)表示讀入的來源,文件、字符或產(chǎn)生器,可以是.gz或.bz2d的壓縮文件
dtype數(shù)據(jù)類型
delimiter表示分隔字符串,默認為空格 若讀入文件為csv則應設置為','
unpack如果為True,讀入屬性將分別寫入不同變量,默認False
寫入:np.savetxt(frame, array, fmt='%.18', delimiter=None)
frame參數(shù)表示文件、字符或產(chǎn)生器,可以是.gz或.bz2d的壓縮文件。
array參數(shù)表示具有數(shù)據(jù)的數(shù)組。
fmt參數(shù)表示寫入文件的格式,例如:%d %.2f %.18e。
delimiter參數(shù)表示分隔字符串,默認為空格。保存為csv文件則應設置為','。
上述兩個函數(shù)np.loadtxt() np.savetxt()都只能有效存取一維和二維數(shù)組
多維數(shù)據(jù)的存取函數(shù)
對于ndarray數(shù)組對象a有寫入函數(shù)
a.tofile(frame, sep='', format='%s')
frame:文件、字符串名
sep:數(shù)據(jù)分割字符串,如果分隔字符串不指定,即為空串的時候,寫入文件為二進制
format:寫入數(shù)據(jù)的格式。
a = np.arange(24).reshape((2,3,4))
a.tofile("a.dat",sep=',', format='%d')
使用記事本打開a.dat文件

a.tofile("b.dat", format='%d')

讀取函數(shù):
np.fromfile(frame, dtype=float, count=-1, sep='')
frame:文件、字符串
dtype:讀取的數(shù)據(jù)類型,默認dtype=float
count:讀入元素個數(shù),-1表示讀入整個文件
sep:數(shù)據(jù)分割字符串,如果分隔字符串不指定,即為空串的時候,寫入文件為二進制
讀入的文件為一維數(shù)組,故需要二維或者多維數(shù)組時需使用.reshape()函數(shù)設置
a1=np.fromfile("a.dat",dtype=np.int, sep=',')
a1
out:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
a1.reshape(2,3,4)
Out:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
b1=np.fromfile("b.dat", dtype=np.int, )
b1
Out:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
由此可見:該方法讀取是需要知道存取文件數(shù)組的維度和元素類型,故需配合使。
numpy便捷文件存取
np.save(fname, array)或np.savez(fname, array)(壓縮格式 .npz)
np.load(fname)
需注意文件名要使用numpy自定義的 .npy數(shù)據(jù)格式
np.save("a.npy", a)

數(shù)組元信息,數(shù)據(jù)類型,維度存在第一行中。
aload=np.load("a.npy")
aload
Out:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])