numpy中loadtxt 的用法


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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM