Python的Numpy模塊可用於存儲和讀取數據:html
1.將一個數組存儲爲二進制文件python
Numpy.save:將一個數組以.npy的格式保存爲二進制文件數組
調用格式:numpy.save(file, arr, allow_pickle=True, fix_imports=True)dom
file的格式:file,str,or pathlib.Path. 若是file是一個文件對象,則文件名不會被改變;若是file是一個字符串或者路徑,而且沒有 .npy擴展,則會在後面加上 .npy的擴展函數
arr: 要保存的數組對象編碼
Numpy.load:從.npy .npz或者pickled文件中加載數組或者pickled對象spa
調用格式:numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')code
file的格式: file-like object, string, or pathlib.Path.相似文件對象(file_like object)必須支持seek()和read()方法。pickled文件要求file_like object必須支持readline()方法orm
encoding:讀取python 2中的字符串時使用的編碼方式。僅當在Python 3中加載Python 2生成的pickled文件時有用,該文件包括含有對象數組的npy / npz文件。不容許使用「 latin1」,「 ASCII」和「 bytes」之外的其餘值,由於它們會破壞數字數據。默認值:「 ASCII」htm
返回:數組、元組或者字典等
import numpy as np arr = np.arange(12).reshape(3,4) # 保存arr數組
np.save('arr.npy', arr) # 讀取arr文件
a = np.load('arr.npy') print(a)
2.將一個數組存儲爲文本文件
Numpy.savetxt:將一個數組保存爲文本文件,只能存儲一維和二維數組
調用格式:numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='n', header='', footer='', comments='# ', encoding=None)
fname:filename or file handle. 若是文件名以.gz結尾,文件將自動保存爲gzip的壓縮格式
X:要保存的一維或者二維數組對象
fmt:規定保存的數組元素類型,默認爲%.18e
delimiter:字符串或者字符,用來分隔列,默認爲空格
Numpy.loadtxt:從一個文本文件中加載數據,文本文件每一行的數值個數必須相同
調用格式:numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converts=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None)
fname:要讀取的文件,能夠是.gz或者.bz2的壓縮文件
dtype:指定數組的數據類型,默認爲float
delimiter:用於分隔元素,要與文件中的分割符一致,默認爲空格
返回:ndarray
import numpy as np arr = np.arange(12).reshape(3,4) # 將一個數組保存爲csv文件 np.savetxt('arr.csv', arr, delimiter=',') # 讀取文件 arr_file = np.loadtxt('arr.csv', dtype=np.int, delimiter=',') print(arr_file)
3.將一個數組存儲爲文本文件或者二進制文件
(這種方法會形成數組的信息丟失,不適合精確存儲)
ndarray.tofile:將一個數組存儲爲文本文件或者二進制文件
調用格式:nadrray.tofile(fid, sep="", format="%s")
fid:能夠是打開的文件對象或者包含文件名的字符串
sep:分隔符,當sep爲空時,以二進制的方式寫入
format:輸出的格式字符串
Numpy.fromfile:從文本或二進制文件中讀取數據
調用格式:numpy.fromfile(file, dtype='float', count=-1, sep='', offset=0)
dtype:規定返回的數組的數據類型
count:讀取的元素個數,-1爲讀取整個文件,默認-1,
offset:用於二進制文件,規定當前文件位置的偏移量(以字節爲單位)
import numpy as np
arr = np.arange(12).reshape(3,4)
arr.tofile('arr.txt', sep=',', format='%d')
# 以存儲後的形式輸出
arr_out1 = np.fromfile('arr.txt', dtype=np.int, sep=',')
print(arr_out1)
# 以存儲前的形式輸出
arr_out2 = np.fromfile('arr.txt', dtype=np.int, sep=',').reshape(3,4)
print(arr_out2)
4.將多個數組存入一個文件
Numpy.savez:將多個數組以未壓縮的.npz格式存入一個文件中
調用格式:numpy.savez(file, *args, **kwds)
若是傳入的數組參數沒有給相應的鍵,則函數會自動給每一個數組參數一個名字,從arr_0、arr_一、arr_2依次遞推;若是給定了鍵,則能夠用給定的鍵。
import numpy as np arr1 = np.arange(12).reshape(3, 4) arr2 = np.random.randint(0, 12, (3, 4)) # 不給數組參數相應的鍵 np.savez('array.npz', arr1, arr2) f = np.load('array.npz') print(f['arr_0']) print(f['arr_1']) # 給數組參數相應的鍵 np.savez('array2.npz', arr1=arr1, arr2=arr2) f2 = np.load('array2.npz') print(f2['arr1']) print(f2['arr2'])
5.將多個數組以壓縮的形式存入一個文件
Numpy.savez_compressed:將多個數組以壓縮後的.npz格式保存到一個文件中
調用格式:numpy.savez_compressed(file, *args, **kwds)
savez_compressed的用法與savez相似