
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 建立和運算元組
- NumPy - 陣列建立例程
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 迭代陣列
- NumPy - 陣列重塑
- NumPy - 連線陣列
- NumPy - 堆疊陣列
- NumPy - 分割陣列
- NumPy - 展平陣列
- NumPy - 轉置陣列
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高階索引
- NumPy 陣列屬性和操作
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列操作
- NumPy - 交換陣列軸
- NumPy - 位元組交換
- NumPy - 副本和檢視
- NumPy - 元素級陣列比較
- NumPy - 過濾陣列
- NumPy - 連線陣列
- NumPy - 排序、搜尋和計數函式
- NumPy - 搜尋陣列
- NumPy - 陣列的並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高階操作
- NumPy - 陣列排序
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 將值追加到陣列
- NumPy - 交換陣列的列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 填充缺失資料
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位數
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
NumPy - 載入陣列
在 NumPy 中載入陣列
NumPy 載入陣列指的是將外部檔案或來源中的資料讀取並載入到 NumPy 陣列的過程。
此功能允許您處理儲存在檔案(如文字檔案、二進位制檔案或其他格式)中的資料,並將這些資料引入 NumPy 環境以進行分析或操作。以下是 NumPy 中載入陣列的常用方法:
- 從文字檔案載入:使用 np.loadtxt() 或 np.genfromtxt() 等函式讀取文字檔案中的資料。
- 從二進位制檔案載入:使用 np.fromfile() 函式讀取二進位制檔案中的資料。
- 從 .npy 檔案載入:使用 np.load() 函式讀取 NumPy 本機二進位制格式(.npy 檔案)中儲存的檔案中的資料。
從文字檔案載入陣列
在 NumPy 中從文字檔案載入陣列是將儲存在純文字檔案中的資料匯入到 NumPy 陣列的常見操作。
NumPy 提供了np.loadtxt()函式和np.genfromtxt()函式來處理不同的文字檔案格式和結構,從而輕鬆處理各種型別的基於文字的資料,它們是:
使用 np.loadtxt() 函式
np.loadtxt() 函式用於將文字檔案中的資料讀取到 NumPy 陣列中。
此函式通常用於載入以表格格式組織的結構化資料,例如 CSV 檔案或空格分隔的檔案。它適用於每個行包含一行數字且所有行具有相同列數的資料檔案。以下是語法:
numpy.loadtxt(fname, dtype=<type>, delimiter=<delimiter>, comments=<char>, skiprows=<num>, usecols=<cols>)
其中,
- fname:要讀取的檔名或檔案物件。
- dtype:結果陣列的資料型別(預設為浮點數)。
- delimiter:分隔值的字串或字元(例如,逗號、空格)。
- comments:指示註釋開始的字串(例如,#)。
- skiprows:要跳過的檔案開頭的行數。
- usecols:要讀取的列的索引(例如,[0, 2] 讀取第一列和第三列)。
示例
假設您有一個文字檔案“data.txt”,其內容如下:
1 2 3 4 5 6 7 8 9
您可以使用 loadtxt() 函式將此資料載入到 NumPy 陣列中,如下所示:
import numpy as np # Load data from a text file array_from_text = np.loadtxt('data.txt') print("Array loaded from text file:") print(array_from_text)
使用 np.genfromtxt() 函式
np.genfromtxt() 函式用於將文字檔案中的資料讀取到 NumPy 陣列中。它對於處理更復雜的文字檔案格式很有用,包括包含缺失值、混合資料型別和不規則結構的檔案。以下是語法:
numpy.genfromtxt(fname, dtype=<type>, delimiter=<delimiter>, comments=<char>, skip_header=<num>, usecols=<cols>, filling_values=<value>, missing_values=<value>, converters=<dict>, encoding=<str>, names=<bool>)
其中,
- fname:要讀取的檔名或檔案物件。
- dtype:結果陣列的資料型別。如果未指定,則預設為浮點數。
- delimiter:分隔值的字串或字元(例如,CSV 使用逗號,空格分隔使用空格)。
- comments:指示註釋開始的字串(例如,#)。以該字元開頭的行將被忽略。
- skip_header:要跳過的檔案開頭的行數(用於跳過標題)。
- usecols:要讀取的列的索引。例如,[0, 2] 將只讀取第一列和第三列。
- filling_values:用於缺失資料的數值。可以是標量或將列索引對映到填充值的字典。
- missing_values:檔案中表示缺失資料的數值。可以是標量或數值列表。
- converters:將列轉換為特定格式的函式的字典。
- encoding:用於讀取檔案的編碼(預設為 None,使用系統預設編碼)。
- names:如果為 True,則假定檔案的首行為列名。
示例
在此示例中,我們使用 genfromtxt() 函式將“data.txt”檔案載入到 NumPy 陣列中:
import numpy as np # Load data from a text file array = np.genfromtxt('data.txt') print("Array loaded from text file:") print(array)
從二進位制檔案載入陣列
在 NumPy 中從二進位制檔案載入陣列涉及讀取以二進位制格式儲存的資料,與文字格式相比,二進位制格式通常更有效地進行儲存和檢索。
二進位制檔案包含原始資料,必須根據預期的格式和資料型別正確解釋這些資料。NumPy 提供了np.fromfile()函式和np.load()函式來從二進位制檔案載入陣列。
使用 np.fromfile() 函式
np.fromfile() 函式用於將二進位制檔案中的資料載入到 NumPy 陣列中。此函式需要了解二進位制檔案的資料型別和格式。以下是語法:
numpy.fromfile(file, dtype=<type>, count=-1, offset=0)
其中,
- file:要讀取的檔名或檔案物件。
- dtype:結果陣列的資料型別(例如,np.float32、np.int32)。
- count:要讀取的專案數。如果為 -1,則讀取所有資料。
- offset:要跳過的檔案開頭的位元組數。
示例
假設您有一個二進位制檔案“data.bin”,其中包含“32 位”浮點資料。可以使用以下程式碼建立該檔案:
import numpy as np # Create a binary file with float data data = np.array([1.1, 2.2, 3.3], dtype=np.float32) data.tofile('data.bin') print ('File created!!')
現在,要讀取此二進位制檔案,請使用以下程式碼:
import numpy as np # Load data from a binary file array = np.fromfile('data.bin', dtype=np.float32) print("Array loaded from binary file:") print(array)
以下是上述程式碼的輸出:
Array loaded from binary file: [1.1 2.2 3.3]
對 .npy 檔案使用 np.load() 函式
NumPy 中的 np.load() 函式用於從 NumPy 本機二進位制格式.npy或.npz檔案中的檔案載入陣列或資料。此格式保留陣列的元資料,例如其形狀和資料型別。“.npz”格式用於以壓縮格式儲存多個數組。
以下是語法:
numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')
其中,
- file:要讀取的檔名或檔案物件。這可以是 .npy 檔案(用於單個數組)或 .npz 檔案(用於多個數組)。
- mmap_mode:如果非 None,則用於將檔案記憶體對映,這允許讀取大型陣列而無需將整個檔案載入到記憶體中。有效值為“r”、“r+”、“w+”等。
- allow_pickle:如果為 True,則允許載入使用 Python 的 pickle 格式儲存的物件。使用此選項時要謹慎,因為它可以執行任意程式碼並構成安全風險。
- fix_imports:如果為 True,則在載入醃製資料時嘗試檢測並修復 Python 2 到 Python 3 的相容性問題。
- encoding:載入 Python 3 檔案時用於解碼 Python 2 字串資料的編碼。預設為“ASCII”。
示例:載入 .npy 檔案
這裡,我們首先將陣列儲存到“.npy”檔案格式:
import numpy as np # Create a NumPy array array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32) # Save the array to a .npy file np.save('data.npy', array) print ("Saved!!")
現在,我們使用 NumPy 中的 load() 函式從“.npy”檔案載入儲存的陣列:
import numpy as np # Load the array from the .npy file array = np.load('data.npy') print("Array loaded from .npy file:") print(array)
獲得的輸出如下所示:
Array loaded from .npy file: [[1 2 3] [4 5 6]]
示例:載入 .npz 檔案
“.npz”格式用於將多個數組儲存到單個壓縮檔案中。它建立一個 zip 歸檔檔案,其中每個檔案都是“.npy”檔案,如以下示例所示:
import numpy as np # Save multiple arrays to a .npz file array1 = np.array([1, 2, 3]) array2 = np.array([[4, 5, 6], [7, 8, 9]]) np.savez('data.npz', array1=array1, array2=array2) # Load the arrays from the .npz file data = np.load('data.npz') # Access individual arrays using their keys array1_loaded = data['array1'] array2_loaded = data['array2'] print("Array 1 loaded from .npz file:") print(array1_loaded) print("Array 2 loaded from .npz file:") print(array2_loaded)
執行上述程式碼後,我們將獲得以下輸出:
Array 1 loaded from .npz file: [1 2 3] Array 2 loaded from .npz file: [[4 5 6] [7 8 9]]