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預設的數字的資料型別為雙精度浮點數
%%wri程式設計客棧tefile 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
www.cppcns.com4 5 6
7 8 9
a = np.loadtxt('test2.txt', dtype=int, skiprows=1, comments='#')
print(a)
這裡的comme程式設計客棧nt的是指, 如果行的開頭為#就會跳過該行, 這裡輸出為
[[1 2 3]
&nb程式設計客棧sp;[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=, comments='#', delimiter=',', usecols=(0, 2), unpack=true)
print(a, b)
輸出結果為:
[2 5 8] [3 6 9]
補乙個github的jupyter-notebook鏈結...
本文標題: numpy中loadtxt 的用法詳解
本文位址:
Numpy中的函式
生成用函式 效果np.array x 將輸入資料轉化為乙個ndarray np.array x,dtype 將輸入資料轉化為乙個型別為type的ndarray np.asarray array 將輸入資料轉化為乙個新的 copy ndarray np.ones n 生成乙個n長度的一維全一ndarr...
Numpy中的transpose函式
transpose 的操作物件是矩陣。我們用乙個例子來說明這個函式 0 1 2 3 4 5 6 7 這是乙個shape為 2,2,2 的矩陣,現在對它進行transpose操作。首先我們對矩陣的維度進行編號,上述矩陣有三個維度,則編號分別為0,1,2,而transpose函式的引數輸入就是基於這個編...
numpy中的陣列切片
如同python中自帶的切片,numpy中也有類似的切片功能。接下來對兩個功能進行一下簡單的對比。首先測試python自帶的功能,在shell視窗中測試如下 in 1 data range 10 in 2 data out 2 0,1,2,3,4,5,6,7,8,9 in 3 data1 data ...