Royc30ne

Royc30ne

机器学习 | 联邦学习 | VPS | 摄影 | 日常

[NumPy技巧]應用NumPy在機器學習中對資料集進行保存以集中管理

https://images.unsplash.com/photo-1646583288948-24548aedffd8?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb
文章首發於若緘

摘要#

在機器學習中,數據是至關重要的。因此,對於任何機器學習項目,對數據的管理和處理都是必不可少的。數據管理涉及到許多方面,包括數據的收集、清理、存儲和處理。在這篇文章中,我們將討論如何使用 NumPy 來保存數據集以供集中管理。

使用 NumPy 保存數據集#

NumPy 是一種用於科學計算的 Python 庫。它提供了一個強大的多維數組對象,以及一系列用於處理這些數組的函數。NumPy 數組可以存儲不同類型的數據,包括數字、字符串和布爾值。因此,它們是存儲數據集的理想選擇。

保存單個數組#

如果你的數據集中只有一個數組,我們可以使用 NumPy 的save函數。

numpy.save#

函數變量:

file: file, str, or pathlib.Path

數據被保存到的文件或文件名。如果文件是一個文件對象,那麼文件名將不會改變。如果文件是一個字符串或路徑,如果文件名還沒有擴展名,那麼將在文件名上添加一個.npy擴展名。

arr: array_like

要保存的陣列數據。

allow_pickle: bool, optional

允許使用 Python pickles 來保存對象數組。不允許 pickle 的原因包括安全性 (加載 pickle 的數據可以執行任意代碼) 和可移植性 (pickle 的對象可能無法在不同的 Python 安裝上加載,例如,如果存儲的對象需要的庫不可用,而且不是所有 pickle 的數據都能在 Python 2 和 Python 3 之間兼容)。默認值: True

fix_imports: bool, optional

只有在強迫 Python 3 上對象數組中的對象以 Python 2 兼容的方式被 pickle 時才有用。如果 fix_imports 為 True,pickle 將嘗試把新的 Python 3 名稱映射到 Python 2 中使用的舊模塊名稱,這樣 pickle 的數據流就可以用 Python 2 讀取。

例如,假設我們有一個名為data的 NumPy 數組,我們可以使用以下代碼將其保存到名為data.npy的文件中:

import numpy as np

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.save('data.npy', data)

從文件中加載數組#

要加載數據集,我們可以使用 NumPy 的load函數。例如,以下代碼加載了名為data.npy的文件中保存的數組:

import numpy as np

data = np.load('data.npy')
print(data)

輸出將是:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

同時保存多個數組#

如果你的數據集中具有多個數組,像 trani_set, train_label, test_set, test_label。可以使用 NumPy 的savez或者savez_compressed函數對數據集進行保存。**numpy.savez將多個數組保存為未壓縮的.npz文件,而numpy.savez_compressed將數組保存為壓縮的.npz** 文件,可以節省存儲空間。

numpy.savez#

函數變量:

file: str or file

文件名(str)或一個打開的文件(file-like object),數據將被保存在那裡。如果文件是一個字符串或一個路徑,如果文件名中沒有.npz擴展名,將被附加到文件名中.

args: Arguments, optional

要保存到文件中的數組。請使用關鍵字參數(見下面的 kwds)來給數組指定名稱。作為 args 指定的數組將被命名為 "arr_0"、"arr_1",以此類推。

kwds: Keyword arguments, optional

要保存到文件的數組。每個數組將以其相應的關鍵字名稱保存到輸出文件中。

kwds,數組將以關鍵字的名稱保存。在這個例子中,我們創建了兩個 NumPy 數組array1array2,然後使用numpy.savez將它們保存到名arrays.npz** 的文件中。需要注意的是,我們需要為每個數組指定一個關鍵字參數,該參數將作為數組在文件中的名稱。

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 保存數組到文件
np.savez('arrays.npz', arr1=array1, arr2=array2)

numpy.savez_compressed#

函數變量:

file: str or file

文件名(str)或一個打開的文件(file-like object),數據將被保存在那裡。如果文件是一個字符串或一個路徑,如果文件名中沒有.npz擴展名,將被附加到文件名中。

args: Arguments, optional

要保存到文件中的數組。請使用關鍵字參數(見下面的 kwds)來給數組指定名稱。作為 args 指定的數組將被命名為 "arr_0"、"arr_1",以此類推。

kwds: Keyword arguments, optional

要保存到文件的數組。每個數組將以其相應的關鍵字名稱保存到輸出文件中。

這個例子與上一個類似,但使用了 **numpy.savez_compressed將數組保存為壓縮的.npz** 文件。

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 保存數組到壓縮文件
np.savez_compressed('compressed_arrays.npz', arr1=array1, arr2=array2)

從文件中加載數組#

要從 **.npz文件中加載數組,可以使用numpy.load** 函數:

import numpy as np

# 加載保存的數組
loaded_arrays = np.load('arrays.npz')

# 通過在文件中指定的名稱訪問數組
loaded_array1 = loaded_arrays['arr1']
loaded_array2 = loaded_arrays['arr2']

在這個例子中,我們使用 **numpy.load加載了名為arrays.npz的文件,並通過之前指定的名稱訪問其中的數組。同樣的方法也適用於加載壓縮的.npz** 文件。

小結#

在本文中,我們討論了如何使用 NumPy 來保存數據集以供集中管理。這是一個重要的數據管理方面,應該在任何機器學習項目中得到充分的重視。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。