小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 LibraryPKU 2019-07-19

genfromtxt函數(shù)

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

What is genfromtxt?

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

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

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

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

import numpy
  • 定義輸入

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

  • 將行分割成列

    • genfromtxt分割每個非空行成一個字符串序列。空的行或注釋行跳過。

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

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

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

  • comments參數(shù)

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

  • skip_header和skip_footer參數(shù)

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

  • usercols參數(shù)

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

  • dtype參數(shù)

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

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

可以將names參數(shù)設(shè)置為true并跳過第一行,程序?qū)训谝恍凶鳛榱忻Q,即使第一行被注釋掉了也會被讀取?;蚩梢允褂胐type設(shè)置名稱,也可以重寫names,默認的names是none,當names=none時,將有numpy產(chǎn)生一些標準默認的值"f%i",我們可以通過defaultfmt改變默認格式。

  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')])

注意:我們需要記住,只有一些名字沒有定義時才會使用defaultfmt

  • 驗證names

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

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

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

  • missing_values

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

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

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

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

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

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

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

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

  • ndfromtxt

通常設(shè)置usemask=False.輸出通常是一個標準的numpy.ndarray.

  • mafromtxt

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

  • recfromtxt

返回標準的numpy.recarray (如果usemask=False)或一個MaskedRecords數(shù)組(如果usemaske=True).默認的dtype是dtype=None,意味著每一列的類型將自動確定。

  • recfromcsv

類似于recfromtxt, 但delimiter=",".

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多