日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Numpy函數(shù)筆記 - genfromtxt函數(shù)

 LibraryPKU 2019-07-19

genfromtxt函數(shù)

今天學(xué)習(xí)時(shí)遇到了genfromtxt函數(shù)
world_alcohol = numpy.genfromtxt("world_alcohol.txt",delimiter=",",dtype = str)

What is genfromtxt?

  • genfromtxt函數(shù)創(chuàng)建數(shù)組表格數(shù)據(jù)

  • genfromtxt主要執(zhí)行兩個(gè)循環(huán)運(yùn)算。第一個(gè)循環(huán)將文件的每一行轉(zhuǎn)換成字符串序列。第二個(gè)循環(huán)將每個(gè)字符串序列轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)類(lèi)型。

  • genfromtxt能夠考慮缺失的數(shù)據(jù),但其他更快和更簡(jiǎn)單的函數(shù)像loadtxt不能考慮缺失值。

  • 使用前需導(dǎo)入相應(yīng)模塊

import numpy
  • 定義輸入

genfromtxt唯一的強(qiáng)制參數(shù)是數(shù)據(jù)的來(lái)源。它可以是一個(gè)對(duì)應(yīng)于一個(gè)本地或遠(yuǎn)程文件的名字字符串,或一個(gè)有read方法的file-like對(duì)象(如一個(gè)實(shí)際的文件或StringIO。StringIO對(duì)象)。如果參數(shù)是一個(gè)遠(yuǎn)程文件的URL,后者在當(dāng)前目錄中自動(dòng)下載。輸入文件可以是一個(gè)文本文件或存檔,目前,該函數(shù)識(shí)別gzip和bz2(bzip2)。歸檔文件的類(lèi)型是檢查文件的擴(kuò)展:如果文件名以“.gz”結(jié)尾”,gzip存檔;如果它結(jié)尾是“bz2”,bzip2存檔。

  • 將行分割成列

    • genfromtxt分割每個(gè)非空行成一個(gè)字符串序列。空的行或注釋行跳過(guò)。

    • 分割符并不局限于單個(gè)字符,任何字符串就可以了。

    • 分割一個(gè)固定寬度的文件,列的寬度被定義為一個(gè)給定的字符數(shù)。在這種情況下,我們需要將分隔符設(shè)置成一個(gè)整數(shù)(如果所有的列有相同的大小)或一個(gè)整數(shù)序列(如果列可以有不同的大小)。

  1. data = "123456789\n 4 7 9\n 4567 9"
  2. np.genfromtxt(StringIO(data), delimiter=(4, 3, 2))
  3. array([[ 1234., 567., 89.], [ 4., 7., 9.], [ 4., 567., 9.]])

genfromtxt 參數(shù)詳解

  • autostrip參數(shù)

當(dāng)把一行分割成一個(gè)字符串序列,序列中的每一項(xiàng)前后的多余空格還存在,可以將autostrip參數(shù)設(shè)置為true,去掉空格。

  • comments參數(shù)

comments參數(shù)是一個(gè)字符串,標(biāo)志著一個(gè)注釋的開(kāi)始符號(hào)。默認(rèn)是"#",在轉(zhuǎn)換過(guò)程中注釋標(biāo)記可能發(fā)生在任何地方。任何字符出現(xiàn)在在注釋標(biāo)記之后會(huì)被忽略。
注意:這種行為有一個(gè)例外:如果可選的參數(shù)names= True,第一行檢查到注釋行會(huì)被認(rèn)為是名稱。

  • skip_header和skip_footer參數(shù)

一個(gè)文件的頁(yè)眉會(huì)阻礙文件的處理。在這種情況下,我們需要使用skip_header可選參數(shù)。這個(gè)參數(shù)的值必須是一個(gè)整數(shù),跳過(guò)文件開(kāi)頭的對(duì)應(yīng)的行數(shù),然后再執(zhí)行任何其他操作。同樣的,我們通過(guò)使用skip_footer屬性和n的值可以跳過(guò)文件的最后n行。默認(rèn)值都為0.

  • usercols參數(shù)

在某些情況下,我們只對(duì)數(shù)據(jù)中的某些列感興趣。我們可以使用usecols選擇感興趣的列。這個(gè)參數(shù)接受一個(gè)整數(shù)或一個(gè)整數(shù)序列作為索引。記住,按照慣例,第一列的索引0,-1對(duì)應(yīng)最后一列。如果列有名稱,我們也可以將usecols參數(shù)設(shè)置為他們的名稱,或者包含列名稱一個(gè)字符串序列或逗號(hào)分隔的字符串。

  • dtype參數(shù)

我們從文件讀取的字符串序列要轉(zhuǎn)換為其他類(lèi)型數(shù)據(jù)時(shí)需設(shè)置dtype參數(shù)。默認(rèn)是float類(lèi)型。

  1. 1.單個(gè)類(lèi)型,如dtype =float。
  2. 2.一個(gè)序列類(lèi)型,例如dtype=(int, float, float).
  3. 3.一個(gè)逗號(hào)分隔的字符串,例如dtype="i4,f8,|S3".
  4. 4.一個(gè)字典包含兩個(gè)鍵‘names’和‘formats’
  5. 5.一個(gè)元組序列,例如dtype = [('A',int),('B',float)]
  6. 6.一個(gè)存在的numpy.dtype對(duì)象
  7. 7.一個(gè)特殊的值None,在這種情況下,每個(gè)列的類(lèi)型有自身數(shù)據(jù)決定。將參數(shù)設(shè)置成None效率較低。因?yàn)樗鼤?huì)從布爾值開(kāi)始檢驗(yàn),然后是整型,浮點(diǎn)型,復(fù)數(shù)最后是字符串,直到滿足條件為止。
  • names參數(shù)

可以將names參數(shù)設(shè)置為true并跳過(guò)第一行,程序?qū)训谝恍凶鳛榱忻Q,即使第一行被注釋掉了也會(huì)被讀取。或可以使用dtype設(shè)置名稱,也可以重寫(xiě)names,默認(rèn)的names是none,當(dāng)names=none時(shí),將有numpy產(chǎn)生一些標(biāo)準(zhǔn)默認(rèn)的值"f%i",我們可以通過(guò)defaultfmt改變默認(rèn)格式。

  1. data = StringIO("1 2 3\n 4 5 6")
  2. ndtype=[('a',int), ('b', float), ('c', int)]
  3. names = ["A", "B", "C"]
  4. np.genfromtxt(data, names=names, dtype=ndtype)array([(1, 2.0, 3), (4, 5.0, 6)],
  5. dtype=[('A', '<i8'), ('B', '<f8'), ('C', '<i8')])

注意:我們需要記住,只有一些名字沒(méi)有定義時(shí)才會(huì)使用defaultfmt

  • 驗(yàn)證names

Numpy數(shù)組和一個(gè)結(jié)構(gòu)化dtype也可以視為recarray,一個(gè)字段可以當(dāng)成一個(gè)屬性訪問(wèn)。出于這個(gè)原因,我們可能需要確保字段名稱不包含任何空格或無(wú)效的字符,或者不符合標(biāo)準(zhǔn)屬性的名稱(如size或shape)。genfromtxt接受三個(gè)可選參數(shù),提供了一個(gè)更好的控制上的名字:

  1. - deletechars:一個(gè)name中所有包含的需要?jiǎng)h除的連接符。默認(rèn)情況下無(wú)效字符~!@#$%^&*()——+~=\|]}({;:/?>,<。
  2. - excludelist:給出一系列要?jiǎng)h除的name,如return,file,print……如果其中一個(gè)輸入的名字出現(xiàn)在這個(gè)列表中,將會(huì)給它附加一個(gè)下劃線(“_”)。
  3. - case_sensitive:名字是否應(yīng)該區(qū)分大小寫(xiě)(case_sensitive = True),轉(zhuǎn)換為大寫(xiě)(case_sensitive=False or case_sensitive='upper')或轉(zhuǎn)換為小寫(xiě)(case_sensitive='lower')
  • converters參數(shù)

當(dāng)我們希望日期的格式MM/DD/YYYY被轉(zhuǎn)換為一個(gè)datetime對(duì)象,或一個(gè)字符串xx%正確地轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)在0和1之間時(shí),需要使用converters參數(shù)定義轉(zhuǎn)換函數(shù)。
這個(gè)參數(shù)的值通常是一個(gè)以列索引或列名稱作為鍵和一個(gè)轉(zhuǎn)換函數(shù)作為值的字典。這些轉(zhuǎn)換函數(shù)可以是實(shí)際的函數(shù)或lambda函數(shù)。在任何情況下,他們應(yīng)該只接受一個(gè)字符串作為輸入和輸出和只有一個(gè)想要得到的元素類(lèi)型。

  • missing_values

默認(rèn)情況下使用空格表示缺失,我們可以使用更復(fù)雜的字符表示缺失,例如'N/A'或'???'。missing_values接受三種類(lèi)型的值:

  1. - 一個(gè)字符串或逗號(hào)分隔的字符串:這個(gè)字符串將被用作標(biāo)記的缺失數(shù)據(jù)的所有列
  2. - 一個(gè)字符串序列:在這種情況下,按照順序每一項(xiàng)與對(duì)應(yīng)的列相關(guān)聯(lián)。
  3. - 一個(gè)字典:字典的值是字符串或字符串序列。對(duì)應(yīng)的key可以列索引(整數(shù))或列名(字符串)。此外,key=none定義一個(gè)默認(rèn)值的適用于所有列。
  • filling_values參數(shù)

出現(xiàn)缺失值時(shí),系統(tǒng)默認(rèn)填充的值:

Expected type Default
bool False
int -1
float np.nan
complex np.nan+0j
string '???'

我們也可以像missing_values參數(shù)自定義設(shè)置參數(shù)的值。filling_values接受三種類(lèi)型的值:

  1. - 一個(gè)單獨(dú)的值:所有列的默認(rèn)值
  2. - 一個(gè)序列的值:按照順序每一項(xiàng)對(duì)應(yīng)相應(yīng)列。
  3. - 一個(gè)字典:字典的值是一個(gè)單獨(dú)的對(duì)象。對(duì)應(yīng)的key可以列索引(整數(shù))或列名(字符串)。此外,key=none定義一個(gè)默認(rèn)值的適用于所有列。
  • usermask參數(shù)

我們可能還想跟蹤缺失數(shù)據(jù)的發(fā)生通過(guò)構(gòu)造一個(gè)Boolean mask,數(shù)據(jù)缺失的地方返回true,否則,則返回False。要做到這一點(diǎn),我們必須設(shè)置可選參數(shù)usemask=True(默認(rèn)是False)。結(jié)果將輸出一個(gè)MaskedArray數(shù)組。

除了genfromtxt,numpy.lib.io模塊提供了一些來(lái)自genfromtxt的便捷功能。這些功能都是以相同的方式工作,但他們有不同的默認(rèn)值。

  • ndfromtxt

通常設(shè)置usemask=False.輸出通常是一個(gè)標(biāo)準(zhǔn)的numpy.ndarray.

  • mafromtxt

通常設(shè)置usemask=True. 輸出是MaskedArray

  • recfromtxt

返回標(biāo)準(zhǔn)的numpy.recarray (如果usemask=False)或一個(gè)MaskedRecords數(shù)組(如果usemaske=True).默認(rèn)的dtype是dtype=None,意味著每一列的類(lèi)型將自動(dòng)確定。

  • recfromcsv

類(lèi)似于recfromtxt, 但delimiter=",".

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多