本文簡要介紹 python 語言中 numpy.genfromtxt
的用法。
用法:
numpy.genfromtxt(fname, dtype=<class '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=" !#$%&'()*+, -./:;<=>?@[\\]^{|}~", replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes', *, like=None)
從文本文件加載數據,缺失值按指定處理。
前 skip_header 行之後的每一行都在分隔符處拆分,注釋字符之後的字符將被丟棄。
- fname: 文件、str、pathlib.Path、str 列表、生成器
要讀取的文件、文件名、列表或生成器。如果文件擴展名是
.gz
或.bz2
,則首先解壓縮文件。請注意,生成器必須返回字節或字符串。列表中的字符串或由生成器生成的字符串被視為行。- dtype: dtype,可選
結果數組的數據類型。如果為 None,則 dtypes 將由每列的內容單獨確定。
- comments: str,可選
用於指示注釋開始的字符。注釋後一行上出現的所有字符都將被丟棄。
- delimiter: str、int 或序列,可選
用於分隔值的字符串。默認情況下,任何連續的空格都充當分隔符。也可以提供整數或整數序列作為每個字段的寬度。
- skiprows: 整數,可選
在 numpy 1.10 中刪除了 skiprows。請改用skip_header。
- skip_header: 整數,可選
在文件開頭要跳過的行數。
- skip_footer: 整數,可選
在文件末尾要跳過的行數。
- converters: 可變的,可選的
將列數據轉換為值的函數集。轉換器還可用於為缺失數據提供默認值:
converters = {3: lambda s: float(s or 0)}
。- missing: 可變的,可選的
在 numpy 1.10 中刪除了缺失。請改用missing_values。
- missing_values: 可變的,可選的
對應於缺失數據的字符串集。
- filling_values: 可變的,可選的
缺少數據時用作默認值的一組值。
- usecols: 順序,可選
要讀取的列,0 是第一個。例如,
usecols = (1, 4, 5)
將提取第 2、第 5 和第 6 列。- names: {無,真,str,序列},可選
如果 names 為 True,則從前 skip_header 行之後的第一行讀取字段名稱。此行之前可以有選擇地使用注釋分隔符。如果名稱是逗號分隔名稱的序列或single-string,則名稱將用於定義結構化數據類型中的字段名稱。如果名稱為無,則將使用 dtype 字段的名稱(如果有)。
- excludelist: 順序,可選
要排除的名稱列表。該列表附加到默認列表 [‘return’,'file','print']。排除的名稱附加下劃線:例如,file 將變為 file_。
- deletechars: str,可選
組合了必須從名稱中刪除的無效字符的字符串。
- defaultfmt: str,可選
用於定義默認字段名稱的格式,例如 “f%i” 或 “f_%02i”。
- autostrip: 布爾型,可選
是否自動從變量中去除空格。
- replace_space: 字符,可選
用於替換變量名中的空格的字符。默認情況下,使用‘_’。
- case_sensitive: {真,假,‘upper’, ‘lower’},可選
如果為 True,則字段名稱區分大小寫。如果為 False 或 ‘upper’,則字段名稱將轉換為大寫。如果‘lower’,字段名稱將轉換為小寫。
- unpack: 布爾型,可選
如果為 True,則返回的數組被轉置,以便可以使用
x, y, z = genfromtxt(...)
解包參數。當與結構化數據類型一起使用時,將為每個字段返回數組。默認為假。- usemask: 布爾型,可選
如果為 True,則返回一個掩碼數組。如果為 False,則返回一個常規數組。
- loose: 布爾型,可選
如果為 True,則不要為無效值引發錯誤。
- invalid_raise: 布爾型,可選
如果為 True,如果在列數中檢測到不一致,則會引發異常。如果為 False,則會發出警告並跳過有問題的行。
- max_rows: 整數,可選
要讀取的最大行數。不得與skip_footer 同時使用。如果給定,該值必須至少為 1。默認是讀取整個文件。
- encoding: str,可選
用於解碼輸入文件的編碼。當 fname 是文件對象時不適用。特殊值 ‘bytes’ 啟用向後兼容解決方法,確保您在可能的情況下接收字節數組並將 latin1 編碼的字符串傳遞給轉換器。覆蓋此值以接收 unicode 數組並將字符串作為輸入傳遞給轉換器。如果設置為無,則使用係統默認值。默認值為‘bytes’。
- like: array_like
允許創建非 NumPy 數組的引用對象。如果作為
like
傳入的類似數組支持__array_function__
協議,則結果將由它定義。在這種情況下,它確保創建一個與通過此參數傳入的數組對象兼容的數組對象。
- out: ndarray
從文本文件中讀取的數據。如果 usemask 為 True,則這是一個掩碼數組。
參數:
返回:
注意:
當使用空格作為分隔符時,或者當沒有給出分隔符作為輸入時,兩個字段之間不應有任何缺失數據。
當變量被命名(通過靈活的數據類型或名稱)時,文件中不得有任何標頭(否則會引發 ValueError 異常)。
默認情況下,單個值不會刪除空格。使用自定義轉換器時,請確保該函數確實刪除了空格。
參考:
NumPy 用戶指南,I/O with NumPy 部分。
1:
例子:
>>> from io import StringIO >>> import numpy as np
具有混合 dtype 的逗號分隔文件
>>> s = StringIO(u"1,1.3,abcde") >>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'), ... ('mystring','S5')], delimiter=",") >>> data array((1, 1.3, b'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
使用 dtype = 無
>>> _ = s.seek(0) # needed for StringIO example only >>> data = np.genfromtxt(s, dtype=None, ... names = ['myint','myfloat','mystring'], delimiter=",") >>> data array((1, 1.3, b'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
指定 dtype 和名稱
>>> _ = s.seek(0) >>> data = np.genfromtxt(s, dtype="i8,f8,S5", ... names=['myint','myfloat','mystring'], delimiter=",") >>> data array((1, 1.3, b'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
固定寬度列的示例
>>> s = StringIO(u"11.3abcde") >>> data = np.genfromtxt(s, dtype=None, names=['intvar','fltvar','strvar'], ... delimiter=[1,3,5]) >>> data array((1, 1.3, b'abcde'), dtype=[('intvar', '<i8'), ('fltvar', '<f8'), ('strvar', 'S5')])
顯示評論的示例
>>> f = StringIO(''' ... text,# of chars ... hello world,11 ... numpy,5''') >>> np.genfromtxt(f, dtype='S12,S12', delimiter=',') array([(b'text', b''), (b'hello world', b'11'), (b'numpy', b'5')], dtype=[('f0', 'S12'), ('f1', 'S12')])
相關用法
- Python numpy geterr用法及代碼示例
- Python numpy get_include用法及代碼示例
- Python numpy.geterrcall用法及代碼示例
- Python numpy geomspace用法及代碼示例
- Python numpy geterrobj用法及代碼示例
- Python numpy gradient用法及代碼示例
- Python numpy gcd用法及代碼示例
- Python numpy greater_equal用法及代碼示例
- Python numpy greater用法及代碼示例
- Python numpy RandomState.standard_exponential用法及代碼示例
- Python numpy hamming用法及代碼示例
- Python numpy legendre.legint用法及代碼示例
- Python numpy chararray.ndim用法及代碼示例
- Python numpy chebyshev.chebsub用法及代碼示例
- Python numpy chararray.nbytes用法及代碼示例
- Python numpy ma.indices用法及代碼示例
- Python numpy matrix.A1用法及代碼示例
- Python numpy MaskedArray.var用法及代碼示例
- Python numpy ma.zeros用法及代碼示例
- Python numpy broadcast用法及代碼示例
- Python numpy matrix.T用法及代碼示例
- Python numpy matrix.I用法及代碼示例
- Python numpy MaskedArray.T用法及代碼示例
- Python numpy hermite.hermfromroots用法及代碼示例
- Python numpy hermite_e.hermediv用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.genfromtxt。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。