本章介紹numpy的I/O函數(shù)瓮顽。
1、numpy.loadtext()
numpy.loadtxt(fname,?dtype=,?comments='#',?delimiter=None,?converters=None,?skiprows=0,?usecols=None,?unpack=False,?ndmin=0)
1>功能:
從*.txt (文本文件)中獲取數(shù)據(jù)傅事,每行數(shù)據(jù)的數(shù)量必須相同。
2>參數(shù)說明:
fname:文件名稱或者路徑字符串。如果文件是壓縮文件(.gz题禀,.bz2后綴)文件必須先解壓搬设。
dtype:輸出數(shù)組的數(shù)據(jù)類型穴店。如果這里的數(shù)據(jù)類型是結(jié)構(gòu)型的數(shù)據(jù)({‘names’:(‘name1’.....),'formats':('format_1',......)}),那么輸出的數(shù)組將是一維數(shù)組拿穴,每個(gè)數(shù)組元素的結(jié)構(gòu)與所設(shè)置的數(shù)據(jù)結(jié)構(gòu)相同泣洞。結(jié)構(gòu)型數(shù)據(jù)的列數(shù)必須和文件每行列數(shù)相同。
dtype=int ? ?#整個(gè)sh輸出數(shù)組元素為int類型
dtype={'names':('a','b','c'),'formats':(int,float,int)} ? ?#文件列數(shù)為3默色,輸出數(shù)組為一維數(shù)組球凰,每個(gè)數(shù)組元素為所設(shè)置的格式。注意腿宰,names對應(yīng)的元組里必須是字符串呕诉。names 和formats是固定格式。
>>>[(10, 2., 3) (30, 4., 5)]
commets:注釋標(biāo)記吃度,默認(rèn)為“#”甩挫,其后面的文字將不被載入。
?delimiter:分隔符规肴。用來分割數(shù)據(jù)捶闸。接受字符串
delimiter="," ? ?#默認(rèn)為空白鍵
converters:這里接受一個(gè)字典,建立一個(gè)從列號(column number)到一個(gè)函數(shù)的映射拖刃。函數(shù)的參數(shù)是所在列的元素删壮。這個(gè)參數(shù)可以在所在列丟失數(shù)據(jù)的情況下為該處數(shù)據(jù)設(shè)置一個(gè)默認(rèn)值。用法:
converters={3: lambda x: float(x.strip() or 0} ? ?#在第4列操作兑牡,映射到一個(gè)匿名函數(shù)央碟,參數(shù)為x,當(dāng)數(shù)據(jù)缺失的時(shí)候,用0來填充亿虽。
converters={0:function} ? ?#第1列操作菱涤,映射到function函數(shù)。
skiprows:跳過的行數(shù)洛勉,默認(rèn)為0粘秆,即從第一行開始。
usecols:使用的列序收毫,
usecols=(1,2) ? ?#使用第2列和第三列數(shù)據(jù)
>>>[[2. 3.] [4. 5.]]
2攻走、numpy.genfromtxt()
numpy.genfromtxt(fname,?dtype=,?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)
1>功能:
此函數(shù)的作用同loadtext,但是較前者更為強(qiáng)大,所接受的文件類型包括文本文檔此再,csv文檔昔搂,以及壓縮文檔(gzip,bz2)。
2>參數(shù)說明:
除了與以上函數(shù)相同的參數(shù)使用方法之外输拇,genfromtxt還有眾多特有的有用方法摘符。
missing_values:此參數(shù)用來識別缺失數(shù)據(jù),與之相對的filling_values用來處理缺失的數(shù)據(jù)策吠。此處可以接受 字符串逛裤、序列字符、字典三種數(shù)據(jù)類型奴曙。這三種數(shù)據(jù)類型中别凹,字符串用來控制所有列的缺失數(shù)據(jù)標(biāo)記;序列字符按順序控制每一列缺失數(shù)據(jù)的標(biāo)記洽糟;字典中炉菲,索引項(xiàng)可以表示列數(shù)或者列名稱,對應(yīng)的項(xiàng)為缺失標(biāo)記坤溃。filling_values也有同樣的用法拍霜。
filling_values:此參數(shù)用來填充用missing_values標(biāo)記的缺失數(shù)據(jù)。
1,*,3薪介;3,4,5 ? ?#使用的數(shù)據(jù)祠饺,“*”為缺失部分
np.genfromtxt('test.txt',delimiter=',',missing_values='*',filling_values='-1') ? ?#標(biāo)記處缺失數(shù)據(jù)是用*表示,采用-1來替換缺失數(shù)據(jù)
>>>[[ 1. -1. 3.] [ 3. 4. 5.]]
autostrip:自動(dòng)的去除元素中的空格鍵汁政,接受布爾類型的值
max_rows:所讀取的最大行數(shù)道偷。必須和skip_footer一起使用。
skip_footer:從尾部開始跳過的行數(shù)记劈。
dtype:所接受的參數(shù)類型與上一個(gè)函數(shù)稍有不同勺鸦,可以接受一個(gè)字符串,序列目木,以及(name,type)型的元組换途。
arr=np.genfromtxt('test.txt',delimiter=',',dtype=(int,float,complex)) ? ?#序列
>>>[(1, nan, 3.+0.j) (3, 4., 5.+0.j)]
arr=np.genfromtxt('test.txt',delimiter=',',dtype=complex) ? ?#單個(gè)類型
>>>[[ 1.+0.j nan+0.j 3.+0.j] [ 3.+0.j 4.+0.j 5.+0.j]]
arr=np.genfromtxt('test.txt',delimiter=',',dtype=[('0',int),('1',complex),('2',complex)]) ? ?#(name,type)型元組,這里name可以通過names參數(shù)設(shè)置。
>>>[(1, nan+0.j, 3.+0.j) (3, 4.+0.j, 5.+0.j)]
names:此參數(shù)用來給每列分配一個(gè)名字