您好,登錄后才能下訂單哦!
numpy中有兩個函數可以用來讀取文件,主要是txt文件, 下面主要來介紹這兩個函數的用法
第一個是loadtxt, 其一般用法為
numpy.loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
上面給出了loadtxt所有的關鍵字參數, 這里我們可以來一一解釋并給出示例
這里我們使用的是jupyter notebook, 可以實現交互式的界面操作
%%writefile test.txt # 這是用來寫入文件的代碼 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7
首先給出最簡單的loadtxt的代碼
import numpy as np a = np.loadtxt('test.txt')#最普通的loadtxt print(a)
實際上就是直接寫文件名, 其他關鍵字參數都是默認的。輸出為
[[1. 2. 3. 4.]
[2. 3. 4. 5.]
[3. 4. 5. 6.]
[4. 5. 6. 7.]]
a為浮點數的原因為Python默認的數字的數據類型為雙精度浮點數
%%writefile test.txt A B C 1 2 3 4 5 6 7 8 9 a = np.loadtxt('test1.txt', skiprows=1, dtype=int) print(a)
這里的skiprows是指跳過前1行, 如果設置skiprows=2, 就會跳過前兩行, 這里的輸出為
[[1 2 3]
[4 5 6]
[7 8 9]]
%%writefile test.txt A B C 1 2 3 # AAA 4 5 6 7 8 9 a = np.loadtxt('test2.txt', dtype=int, skiprows=1, comments='#') print(a)
這里的comment的是指, 如果行的開頭為#就會跳過該行, 這里輸出為
[[1 2 3]
[4 5 6]
[7 8 9]]
%%writefile test.txt A B C 1, 2, 3 # AA AAA 4, 5, 6 7, 8, 9 (a, b) = np.loadtxt('test.txt', dtype=int, skiprows=1, comments='#', delimiter=',', usecols=(0, 2), unpack=True) print(a, b)
這里的usecols是指只使用0,2兩列, unpack是指會把每一列當成一個向量輸出, 而不是合并在一起。
[1 4 7] [3 6 9]
最后介紹converters參數, 這個是對數據進行預處理的參數, 我們可以先定義一個函數, 這里的converters是一個字典, 表示第零列使用函數add_one來進行預處理
def add_one(x): return int(x)+1#注意到這里使用的字符的數據結構 (a, b) = np.loadtxt('test.txt', dtype=int, skiprows=1, converters={0:add_one}, comments='#', delimiter=',', usecols=(0, 2), unpack=True) print(a, b)
輸出結果為:
[2 5 8] [3 6 9]
補一個GitHub的jupyter-notebook鏈接...
https://github.com/ChangChunHe/PythonLearning/blob/master/Numpy/8.loadtxt_and_genfromtxt.ipynb
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。