一、二進制
1.numpy.save()
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
功能:將數組以二進制的形式存儲到文件中
參數:
file:文件名或者文件對象。如果是個文件名,則會自動添加后綴.npy如果沒有該后綴的話arr:被存儲的數組allow_pickle:一個布爾值,如果為True,則使用Python pickle。有時候為了安全性和可移植性而不使用picklefix_imports:用於python3的數組import到python2的情形
2.numpy.savez()
numpy.savez(file, *args, **kwds)
功能:將多個數組以二進制的形式存儲到文件中。
參數:
-
file:文件名或者文件對象。如果是個文件名,則會自動添加后綴.npz如果沒有該后綴的話 -
args:被存儲的數組。這些數組的名字將被自動命名為arr_0/arr_1/...;-
如果沒有名字,則完全無法知曉這些數組的區別
-
-
kwds:將被存儲的數組,這些關鍵字參數就是鍵的名字
3.numpy.load()
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
功能:將二進制文件中讀取數組
參數:
file:一個文件名或者文件對象。它存放着數組mmap_mode:如果不是None,則memory-map該文件。此時對數組的修改會同步到文件上。當讀取大文件的一小部分時很有用,因為它不必一次讀取整個文件。可選值為None/'r+'/'r'/'w+'/'c'allow_pickle:一個布爾值,如果為True,則使用Python pickle。有時候為了安全性和可移植性而不使用picklefix_imports:用於python3的數組import到python2的情形encoding:只用於python2,讀取python2字符串。
該函數返回一個數組,元組,或者字典(當二進制文件時savez生成時)
二、文本文件
1.numpy.genfromtxt()
numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None,skip_header=0, skip_footer=0, converters=None, missing_values=None,filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)
功能 :從文本文件中加載數組,通用性很強,可以處理缺失數據的情況。
loadtxt()函數只能處理數據無缺失的情況。
參數:
-
fname:指定的數據源。可以為:- 文件名字符串。如果后綴為
gz或者bz2,則首先自動解壓縮 - 文件對象/字符串列表/其他可迭代對象:這些可迭代對象必須返回字符串(該字符串被視為一行)
- 文件名字符串。如果后綴為
-
dtype:數組的元素類型,可以提供一個序列,指定每列的數據類型 -
comments:一個字符串,其中每個字符都指定了注釋行的第一個字符。注釋行整體被放棄 -
delimiter:指定了分隔符。可以為:- 字符串:指定分隔符。默認情況下,所有連續的空白符被認為是分隔符
- 一個整數:指定了每個字段的寬度
- 一個整數序列:依次給出了各個字段的寬度
-
skiprows:被廢棄,推薦使用skip_header -
skip_header:一個整數,指定跳過文件頭部多少行 -
skip_footer:一個整數,指定跳過文件尾部多少行 -
converters:用於列數據的格式轉換。你可以指定一個字典,字典的鍵就是列號:- converters={0: lambda s: float(s or 0), 1: lambda s: int(s or 199),... }
-
missing:被廢棄,推薦使用missing_values -
missing_values:指定缺失數據。你可以自定一個字典,字典的鍵就是缺失位置的字符串,值就是缺失值。比如你可以指定NNNN為缺失數據,此時遇到NNNN時,numpy解析為np.nan -
filling_values:指定缺失值的填充值。即解析到np.nan時,用什么值代替它 -
usecols:一個序列,指定了要讀取那些列(列從0 計數) -
names:- 如果為
True,則在skip_header行之后第一行被視作標題行,將從該行讀取每個字段的name。 - 如果為序列或者一個以冒號分隔的字符串,則使用它作為各個字段的
name - 如果為
None,則每個dtype字段的名字被使用
- 如果為
-
excludelist:一個序列,給出了需要排除的字段的name。 -
deletechars:A string combining invalid characters that must be deleted from the names -
defaultfmt:A format used to define default field names, such as “f%i” or “f_%02i”. -
autostrip:一個布爾值。如果為True,則自動移除數據中的空白符 -
replace_space:一個字符。如果變量名中有空白符,如user name,則使用該字符來替代空白符。默認為_,即變量名轉換為user_name -
case_sensitive:一個布爾值或者字符串。如果為True,則字段名是大小寫敏感的。如果為False或者'upper',則字段名轉換為大寫字符。如果為'lower'則轉換為小寫字符。 -
unpack:If True, the returned array is transposed -
usemask:If True, return a masked array -
loose:If True, do not raise errors for invalid values -
invalid_raise:If True, an exception is raised if an inconsistency is detected in the number of columns. If False, a warning is emitted and the offending lines are skipped -
max_rows:一個整數,指定讀取的最大行數。
2.numpy.loadtxt()
numpy.loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
功能:作用與genfromtxt相同,但是它只能用於規則比較簡單的文件,並且它的解析速度更快。
參數:
ndim:一個整數。指定結果數組必須擁有不少於ndim維度。- 其他參數參考
genfromtxt
3.numpy.fromstring()
numpy.fromstring(string, dtype=float, count=-1, sep='')
功能:從raw binary或者字符串中創建一維數組。
參數:
string:一個字符串,給出數據源dtype:指定數據類型count:一個整數。從數據源(一個字符串)中讀取指定數量的數值類型的數值。如果為負數,則為數據長度加上這個負值sep:如果未提供或者為空字符串,則string被認為是二進制數據。如果提供了一個非空字符串,則給出了分隔符。
4.numpy.savetxt()
numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='',footer='', comments='# ')
功能:存儲到文本文件
參數:
-
fname:給出了文件名或者file對象。如果為.gz后綴,則自動壓縮 -
X:被存儲的數組 -
fmt:一個字符串或者一個字符串序列,指定存儲格式。一個字符串可以指定所有的格式化方式;一個字符串序列可以對每列指定一個格式化方式。如果是虛數,你可以通過%.4e%+.4j的方式指定實部和虛部。 -
delimiter:一個字符串,用於分隔符,分隔每個列 -
newline:一個字符串,指定換行符 -
header:一個字符串。它會寫到文件的首行 -
footer:一個字符串。它會寫到文件的末尾 -
comments:一個字符串。它會寫到文件的中間,並且用注釋符作為行首,如# - 注:
fmt分隔字符串的格式為%[flag]width[.precision]specifier。其中: -
flags:可以為'-'(左對齊)、'+'(右對齊)、'0'(左側填充0) -
width:最小的位寬。 -
precision:- 對於
specifier=d/i/o/x,指定最少的數字個數 - 對於
specifier=e/E/f,指定小數點后多少位 - 對於
specifier=g/G,指定最大的significant digits - 對於
specifier=s,指定最大的字符數量
- 對於
-
specifier:指定格式化類型。c(字符)、d/i(帶符號整數)、e/E(科學計數法)、f(浮點數)、g/G(使用shorter e/E/f)、o(帶符號八進制)、s(字符串)、u(無符號整數)、x/X(無符號十六進制)
5.ndarray.tofile()
ndarray.tofile(fid, sep="", format="%s")
功能:保存到文件中
參數:
fid:一個file對象或者文件名sep:一個字符串,指定分隔符。如果為空或者空字符串,則按照二進制的方式寫入,等價於file.write(a.tobytes())format:一個字符串,指定了數值的格式化方式
