genfromtxt匯入資料:簡而言之,genfromtxt主要運用兩種迴圈第乙個迴圈以字串序列轉換檔案的每一行。第二個迴圈將每個字串轉換為適當的資料型別,考慮到缺失值的情況。genfromtxt
的唯一強制引數是資料的**。它可以是乙個字串,一串字串或乙個生成器。如果提供了單個字串,則假定它是本地或遠端檔案的名稱,或者帶有read
方法的開放檔案類物件。識別的檔案型別是文字檔案和檔案。目前,該功能可識別
gzip
和bz2
(bzip2)檔案。歸檔檔案的型別由檔案的副檔名決定:如果檔名以'.gz'
結尾,則需要乙個gzip
歸檔檔案;如果它以'bz2'
結尾,則假定bzip2
存檔。
delimiter
引數:一旦檔案被定義並開啟進行讀取,genfromtxt
會將每個非空行分割為一串字串。 空的或注釋的行只是略過。delimiter
關鍵字用於定義拆分應該如何進行。預設情況下,genfromtxt
假定delimiter=none
,意味著該行沿著空白區域(包括製表符)分割,並且連續的空白區域被視為單個空白區域。或者,我們可能正在處理乙個固定寬度的檔案,其中列被定義為給定數量的字元。在這種情況下,我們需要將delimiter
設定為單個整數(如果所有列的大小相同)或整數序列(如果列的大小可能不同)import numpy as np
from io import bytesio
data = "1, 2, 3\n4, 5, 6"
print(np.genfromtxt(bytesio(data), delimiter=","))
'''array([[ 1., 2., 3.],
[ 4., 5., 6.]])
'''
>>> data = " 1 2 3\n 4 5 67\n890123 4"
>>> np.genfromtxt(bytesio(data), delimiter=3)
array([[ 1., 2., 3.],
[ 4., 5., 67.],
[ 890., 123., 4.]])
>>> data = "123456789\n 4 7 9\n 4567 9"
>>> np.genfromtxt(bytesio(data), delimiter=(4, 3, 2))
array([[ 1234., 567., 89.],
[ 4., 7., 9.],
[ 4., 567., 9.]])
autostrip
引數預設情況下,當一行被分解為一系列字串時,單個條目不會被剝離前導空白或尾隨空白。通過將可選引數autostrip設定為值true,可以覆蓋此行為:
#>>> data = "1, abc , 2\n 3, ***, 4"
>>> # without autostrip
>>> np.genfromtxt(bytesio(data), delimiter=",", dtype="|s5")
array([['1', ' abc ', ' 2'],
['3', ' ***', ' 4']],
dtype='|s5')
>>> # with autostrip
>>> np.genfromtxt(bytesio(data), delimiter=",", dtype="|s5", autostrip=true)
array([['1', 'abc', '2'],
['3', '***', '4']],
dtype='|s5')
comments
引數>>> data = """#
... # skip me !
... # skip me too !
... 1, 2
... 3, 4
... 5, 6 #this is the third line of the data
... 7, 8
... # and here comes the last line
... 9, 0
... """
>>> np.genfromtxt(bytesio(data), comments="#", delimiter=",")
[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]
[ 7. 8.]
[ 9. 0.]]
skip_header
和skip_footer
引數檔案中存在標題可能會妨礙資料處理。在這種情況下,我們需要使用
skip_header
可選引數。此引數的值必須是乙個整數,與執行任何其他操作之前在檔案開頭跳過的行數相對應。同樣,我們可以使用skip_footer
屬性跳過檔案的最後一行n
,並給它乙個n
的值,預設情況下,skip_header=0
和skip_footer=0.
:>>> data = "\n".join(str(i) for i in range(10))
>>> np.genfromtxt(bytesio(data),)
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>> np.genfromtxt(bytesio(data),
... skip_header=3, skip_footer=5)
array([ 3., 4.])
usecols
引數在某些情況下,我們對資料的所有列不感興趣,但只有其中的一小部分。我們可以用
usecols
引數選擇要匯入的列。該引數接受與要匯入的列的索引相對應的單個整數或整數序列。請記住,按照慣例,第一列的索引為0。負整數的行為與常規python負向索引相同。例如,如果我們只想匯入第一列和最後一列,我們可以使用
usecols =(0, -1)
:如果列有名稱,我們也可以通過將它們的名稱提供給>>> data = "1 2 3\n4 5 6"
>>> np.genfromtxt(bytesio(data), usecols=(0, -1))
array([[ 1., 3.],
[ 4., 6.]])
usecols
引數來選擇要匯入哪些列,可以將其作為字串序列或逗號分隔字串:>>> data = "1 2 3\n4 5 6"
>>> np.genfromtxt(bytesio(data),
... names="a, b, c", usecols=("a", "c"))
array([(1.0, 3.0), (4.0, 6.0)],
dtype=[('a', '>> np.genfromtxt(bytesio(data),
... names="a, b, c", usecols=("a, c"))
array([(1.0, 3.0), (4.0, 6.0)],
dtype=[('a', '更多引數和功能請查閱numpy中文網。
資料分析手冊 Numpy 7 花哨的索引
花哨的索引 fancy indexing 花哨的索引不同於前面的簡單索引得到的標量,而是直接得到的是傳遞的索引陣列。且能夠讓我們能夠快速獲得並修改複雜的陣列值得字資料集。探索花哨的索引 花哨的索引在概念上非常簡單,它意味著傳遞乙個索引陣列來一次性獲得多個陣列元素。import numpy as np...
numpy資料分析
2020 11 2 import array arr array.array i list range 10 i表示整型,生成序列後不能改變資料型別 多維陣列ndarray方便處理多維度運算,運算效率高 nparr np.array list range 10 修改值,浮點數取整數段 nparr 2...
資料分析 Numpy
什麼是numpy numpy這個詞 於兩個單詞 numerical和python。numpy是python中的乙個運算速度非常快的乙個數學庫,它非常重視陣列,很多的資料科學的包都是依賴於numpy的。它允許你在python中進行向量和矩陣計算,並且由於許多底層函式實際上是用c編寫的,因此你可以體驗在...