當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy genfromtxt用法及代碼示例


本文簡要介紹 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 異常)。

  • 默認情況下,單個值不會刪除空格。使用自定義轉換器時,請確保該函數確實刪除了空格。

參考

1

NumPy 用戶指南,I/O with NumPy 部分。

例子

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

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.genfromtxt。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。