Numpy用於數組數據的存儲和讀取

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(filemmap_mode=Noneallow_pickle=Falsefix_imports=Trueencoding='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相似

相關文章
相關標籤/搜索