今天學習時遇到了genfromtxt函式
world_alcohol = numpy.genfromtxt("world_alcohol.txt",delimiter=",",dtype = str)
import numpy
data = "123456789\n 4 7 9\n 4567 9"
np.genfromtxt(stringio(data), delimiter=(4, 3, 2))
array([[ 1234., 567., 89.], [ 4., 7., 9.], [ 4., 567., 9.]])
當把一行分割成乙個字串序列,序列中的每一項前後的多餘空格還存在,可以將autostrip引數設定為true,去掉空格。
comments引數是乙個字串,標誌著乙個注釋的開始符號。預設是"#",在轉換過程中注釋標記可能發生在任何地方。任何字元出現在在注釋標記之後會被忽略。
注意:這種行為有乙個例外:如果可選的引數names= true,第一行檢查到注釋行會被認為是名稱。
乙個檔案的頁首會阻礙檔案的處理。在這種情況下,我們需要使用skip_header可選引數。這個引數的值必須是乙個整數,跳過檔案開頭的對應的行數,然後再執行任何其他操作。同樣的,我們通過使用skip_footer屬性和n的值可以跳過檔案的最後n行。預設值都為0.
在某些情況下,我們只對資料中的某些列感興趣。我們可以使用usecols選擇感興趣的列。這個引數接受乙個整數或乙個整數序列作為索引。記住,按照慣例,第一列的索引0,-1對應最後一列。如果列有名稱,我們也可以將usecols引數設定為他們的名稱,或者包含列名稱乙個字串序列或逗號分隔的字串。
我們從檔案讀取的字串序列要轉換為其他型別資料時需設定dtype引數。預設是float型別。
1.單個型別,如dtype =float。
2.乙個序列型別,例如dtype=(int, float, float).
3.乙個逗號分隔的字串,例如dtype="i4,f8,|s3".
4.乙個字典包含兩個鍵『names』和『formats』
5.乙個元組序列,例如dtype = [('a',int),('b',float)]
6.乙個存在的numpy.dtype物件
7.乙個特殊的值none,在這種情況下,每個列的型別有自身資料決定。將引數設定成none效率較低。因為它會從布林值開始檢驗,然後是整型,浮點型,複數最後是字串,直到滿足條件為止。
可以將names引數設定為true並跳過第一行,程式將把第一行作為列名稱,即使第一行被注釋掉了也會被讀取。或可以使用dtype設定名稱,也可以重寫names,預設的names是none,當names=none時,將有numpy產生一些標準預設的值"f%i",我們可以通過defaultfmt改變預設格式。
data = stringio("1 2 3\n 4 5 6")
ndtype=[('a',int), ('b', float), ('c', int)]
names = ["a", "b", "c"]
np.genfromtxt(data, names=names, dtype=ndtype)array([(1, 2.0, 3), (4, 5.0, 6)],
dtype=[('a', '注意:我們需要記住,只有一些名字沒有定義時才會使用defaultfmt
numpy陣列和乙個結構化dtype也可以視為recarray,乙個字段可以當成乙個屬性訪問。出於這個原因,我們可能需要確保欄位名稱不包含任何空格或無效的字元,或者不符合標準屬性的名稱(如size或shape)。genfromtxt接受三個可選引數,提供了乙個更好的控制上的名字:
- deletechars:乙個name中所有包含的需要刪除的連線符。預設情況下無效字元~!@#$%^&*()——+~=\|]}({;:/?>,<。
- excludelist:給出一系列要刪除的name,如return,file,print……如果其中乙個輸入的名字出現在這個列表中,將會給它附加乙個下劃線(「_」)。
- case_sensitive:名字是否應該區分大小寫(case_sensitive = true),轉換為大寫(case_sensitive=false or case_sensitive='upper')或轉換為小寫(case_sensitive='lower')
當我們希望日期的格式mm/dd/yyyy被轉換為乙個datetime物件,或乙個字串xx%正確地轉換為乙個浮點數在0和1之間時,需要使用converters引數定義轉換函式。
這個引數的值通常是乙個以列索引或列名稱作為鍵和乙個轉換函式作為值的字典。這些轉換函式可以是實際的函式或lambda函式。在任何情況下,他們應該只接受乙個字串作為輸入和輸出和只有乙個想要得到的元素型別。
預設情況下使用空格表示缺失,我們可以使用更複雜的字元表示缺失,例如'n/a'或'???'。missing_values接受三種型別的值:
- 乙個字串或逗號分隔的字串:這個字串將被用作標記的缺失資料的所有列
- 乙個字典:字典的值是字串或字串序列。對應的key可以列索引(整數)或列名(字串)。此外,key=none定義乙個預設值的適用於所有列。
出現缺失值時,系統預設填充的值:
expected type default
bool false
int -1
float np.nan
complex np.nan+0j
string '???'
我們也可以像missing_values引數自定義設定引數的值。filling_values接受三種型別的值:
- 乙個單獨的值:所有列的預設值
- 乙個序列的值:按照順序每一項對應相應列。
- 乙個字典:字典的值是乙個單獨的物件。對應的key可以列索引(整數)或列名(字串)。此外,key=none定義乙個預設值的適用於所有列。
我們可能還想跟蹤缺失資料的發生通過構造乙個boolean mask,資料缺失的地方返回true,否則,則返回false。要做到這一點,我們必須設定可選引數usemask=true(預設是false)。結果將輸出乙個maskedarray陣列。
除了genfromtxt,numpy.lib.io模組提供了一些來自genfromtxt的便捷功能。這些功能都是以相同的方式工作,但他們有不同的預設值。
通常設定usemask=false.輸出通常是乙個標準的numpy.ndarray.
通常設定usemask=true. 輸出是maskedarray
返回標準的numpy.recarray (如果usemask=false)或乙個maskedrecords陣列(如果usemaske=true).預設的dtype是dtype=none,意味著每一列的型別將自動確定。
類似於recfromtxt, 但delimiter=",".
C 函式 筆記
內聯函式只適用於小函式,使用內聯函式需要注意以下幾點 內聯函式中不能含有任何迴圈語句以及switch和goto語句 內聯函式的宣告必須出現在內聯函式第一次被呼叫之前 內聯函式中不能說明陣列 遞迴函式不能定義為內聯函式 函式過載 函式引數個數或型別不同,可以構成過載函式 生命期 是指乙個識別符號從被建...
OpenCV函式筆記
rect和range劃分範圍 rect的引數為起始座標,長度 rect rect 0,0,image1.cols,image1.rows range的引數為起始座標,終止座標 range range 0,100 copyto函式 image1.copyto image2 當image1和image2...
核心函式筆記
使用者與核心空間拷貝函式 copy from user unsigned long copy from user void to,const void user from,unsigned long n 功能 用於將使用者空間的資料傳送到核心空間。第乙個引數to是核心空間的資料目標位址指標,第二個引...