csv文件(comma-Separated Value,逗號分隔值):一種文件格式存儲批量數(shù)據(jù)的文件扮碧。
局限性:只能有效存儲一維和二維數(shù)組趟章。
Numpy讀取和寫入函數(shù)
讀取:np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
frame
參數(shù)表示讀入的來源慎王,文件蚓土、字符或產(chǎn)生器,可以是.gz或.bz2d的壓縮文件
dtype
數(shù)據(jù)類型
delimiter
表示分隔字符串赖淤,默認(rèn)為空格 若讀入文件為csv則應(yīng)設(shè)置為',
'
unpack
如果為True蜀漆,讀入屬性將分別寫入不同變量,默認(rèn)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ù)表示分隔字符串毯盈,默認(rèn)為空格剃毒。保存為csv文件則應(yīng)設(shè)置為',
'。
上述兩個函數(shù)np.loadtxt() np.savetxt()
都只能有效存取一維和二維數(shù)組
多維數(shù)據(jù)的存取函數(shù)
對于ndarray
數(shù)組對象a
有寫入函數(shù)
a.tofile(frame, sep='', format='%s')
frame
:文件搂赋、字符串名
sep
:數(shù)據(jù)分割字符串赘阀,如果分隔字符串不指定,即為空串的時候脑奠,寫入文件為二進(jìn)制
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ù)類型,默認(rèn)dtype=float
count
:讀入元素個數(shù)齿诞,-1表示讀入整個文件
sep
:數(shù)據(jù)分割字符串酸休,如果分隔字符串不指定,即為空串的時候祷杈,寫入文件為二進(jìn)制
讀入的文件為一維數(shù)組斑司,故需要二維或者多維數(shù)組時需使用.reshape()函數(shù)設(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]]])