NumPy numpy.loadtxt() 函式

Suraj Joshi 2023年1月30日
  1. numpy.loadtxt() 的語法
  2. 示例程式碼: NumPy 使用 numpy.loadtxt() 函式讀取 txt 檔案
  3. 示例程式碼:在 numpy.loadtxt() 函式中設定 dtype 引數讀取 txt 檔案
  4. 示例程式碼:讀取 txt 檔案時在 numpy.loadtxt() 函式中設定 delimiter 引數
  5. 示例程式碼:在讀取 txt 檔案時,在 numpy.loadtxt() 函式中設定 usecols 引數
  6. 示例程式碼在讀取 txt 檔案時在 numpy.loadtxt() 函式中設定 unpack 引數
NumPy numpy.loadtxt() 函式

Python Numpy numpy.loadtxt() 函式從文字檔案中載入資料,併為簡單的文字檔案提供了快速方法。

numpy.loadtxt() 的語法

numpy.loadtxt(fname,
              dtype= < class 'float' > ,
              comments='#',
              delimiter=None,
              converters=None,
              skiprows=0,
              usecols=None,
              unpack=False,
              ndmin=0,
              encoding='bytes',
              max_rows=None)

引數

fname 要匯入的 txt 檔案的路徑
dtype 結果陣列的資料型別
comments 用來表示評論開始的字元或字元列表
delimiter 用於解析 txt 檔案內容的定界符
converters 字典將列號對映到一個函式,該函式將把列的字串解析成所需的值。
skiprows 跳過哪一行
usecols 要讀取的列索引
unpack 對返回的陣列進行轉置,因此可以使用 x, y, z = loadtxt(...) 對引數進行解包。[unpack=True]
ndim 返回陣列的最小維數
encoding 用於解碼輸入檔案的編碼
max_rows 讀取 skiprows 行後的最大行數

返回值

txt 檔案中讀取的 N 維陣列。

示例程式碼: NumPy 使用 numpy.loadtxt() 函式讀取 txt 檔案

import numpy as np
  
from io import StringIO    
  
f = StringIO("3 6 8 \n12 9 1 \n 2 3 4") 
a = np.loadtxt(f) 

print("The loaded array is:")
  
print(a)

輸出:

 The loaded array is:
[[ 3.  6.  8.]
 [12.  9.  1.]
 [ 2.  3.  4.]]

它將 txt 檔案載入到 NumPy 陣列中。

這裡,StringIO 的作用就像一個檔案物件。

我們也可以提供 file path 作為引數給 np.loadtxt 函式,使用絕對和相對路徑。

示例程式碼:在 numpy.loadtxt() 函式中設定 dtype 引數讀取 txt 檔案

預設情況下,從文字檔案中讀取的陣列值的資料型別是 float,我們可以使用 dtype 引數手動設定元素的資料型別。我們可以使用 dtype 引數手動設定元素的資料型別。

import numpy as np
  
from io import StringIO    
  
f = StringIO("3 6 8 \n12 9 1 \n 2 3 4") 
a = np.loadtxt(f,dtype="int") 

print("The loaded array is:")
  
print(a)

輸出:

The loaded array is:
[[ 3  6  8]
 [12  9  1]
 [ 2  3  4]]

上面的程式碼將所有從 txt 檔案中讀取的元素以整數形式載入到陣列中。

示例程式碼:讀取 txt 檔案時在 numpy.loadtxt() 函式中設定 delimiter 引數

預設情況下,分隔數值的定界符是一個空白符,我們可以使用 delimiter 引數手動設定定界符。

import numpy as np
  
from io import StringIO    
  
f = StringIO("3, 6, 8 \n12, 9, 1 \n 2, 3, 4") 
a = np.loadtxt(f,dtype="int",delimiter=",") 

print("The loaded array is:")
  
print(a) 

輸出:

The loaded array is:
[[ 3  6  8]
 [12  9  1]
 [ 2  3  4]]

由於上面 txt 檔案的值用 , 隔開,因此當從 txt 檔案讀取到陣列中時,我們必須使用 , 作為分隔符來分隔值。

示例程式碼:在讀取 txt 檔案時,在 numpy.loadtxt() 函式中設定 usecols 引數

import numpy as np
  
from io import StringIO    
  
f = StringIO("3 6 8 \n12 9 1 \n 2 3 4") 
a = np.loadtxt(f,dtype="int",usecols =(0, 1)) 

print("The loaded array is:")
  
print(a)  

輸出:

The loaded array is:
[[ 3  6]
 [12  9]
 [ 2  3]]

usecols 指定從 txt 檔案中讀取哪些列。

它只從 txt 檔案中讀取第 1 列和第 2 列到陣列中。

示例程式碼在讀取 txt 檔案時在 numpy.loadtxt() 函式中設定 unpack 引數

import numpy as np
  
from io import StringIO    
  
f = StringIO("3 6 8 \n12 9 1 \n 2 3 4") 
(x,y,z) = np.loadtxt(f,dtype="int",unpack=True) 

print(x)
print(y)
print(z) 

輸出:

[ 3 12  2]
[6 9 3]
[8 1 4]

它將陣列進行轉置,並將轉置後的陣列行解包到指定的變數中。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn