NumPy - 陣列儲存



在 NumPy 中儲存陣列

在 NumPy 中儲存陣列是指將 NumPy 陣列寫入檔案以便儲存和稍後重新載入的過程。

NumPy 提供了幾種方法來以各種格式儲存陣列,它們是:

  • np.save() 函式: 將單個 NumPy 陣列儲存到二進位制 .npy 格式的檔案中。
  • np.savez() 函式: 將多個 NumPy 陣列儲存到壓縮的 .npz 格式的單個檔案中。
  • np.savez_compressed() 函式: 與 np.savez() 類似,但會壓縮資料以減小檔案大小。
  • np.savetxt() 函式: 將 NumPy 陣列儲存到具有特定格式的文字檔案中。

將陣列儲存到文字檔案

在 NumPy 中將陣列儲存到文字檔案對於以人類可讀的格式匯出資料或與需要文字輸入的其他程式相容非常有用。

NumPy 使用np.savetxt() 函式以指定的格式將陣列寫入文字檔案。它旨在處理包含數值資料的陣列,但可以透過格式化選項將其應用於各種用例。以下是語法:

numpy.savetxt(fname, data, fmt=<format>, delimiter=<delimiter>, header=<header>, footer=<footer>, comments=<char>)

其中,

  • fname: 將資料儲存到的檔名或檔案物件。
  • data: 要儲存的陣列。它可以是一維或多維陣列。
  • fmt: 輸出的格式字串。定義如何格式化資料(例如,浮點精度)。
  • delimiter: 檔案中分隔值用的字串或字元(例如,逗號用於 CSV,空格用於空格分隔)。
  • header: 要寫入檔案開頭的字串。用於新增元資料或列名。
  • footer: 要寫入檔案結尾的字串。可用於附加資訊。
  • comments: 指示註釋開始的字串。預設為 #。

示例

在下面的示例中,我們使用 np.savetxt() 函式將一個二維 NumPy 陣列儲存到文字檔案中:

import numpy as np

# Create an array
array = np.array([[1, 2, 3], [4, 5, 6]])

# Save the array to a text file
np.savetxt('data.txt', array, fmt='%d', delimiter=',', header='Column1,Column2,Column3')
print ('File Saved succesfully!!')

獲得的輸出如下:

File Saved succesfully!!

將陣列儲存到二進位制檔案

在 NumPy 中將陣列儲存到二進位制檔案是將數值資料以緊湊格式儲存的一種方法。二進位制檔案通常用於儲存大型資料集或出於效能原因,因為與文字檔案相比,它們通常讀取和寫入速度更快。

NumPy 提供了np.save() 函式、np.savez() 函式和np.savez_compressed() 函式,專門用於以二進位制格式儲存陣列。

使用 np.save() 函式

np.save() 函式將單個 NumPy 陣列儲存到 NumPy 原生的.npy 格式的二進位制檔案中。此格式包含元資料,例如陣列的形狀和 dtype,允許以後載入和操作。以下是語法:

numpy.save(file, arr, allow_pickle=False, fix_imports=True)

其中,

  • file: 將陣列儲存到的檔名或檔案物件。副檔名應為 .npy。
  • arr: 要儲存的 NumPy 陣列。
  • allow_pickle: 如果為 True,則允許儲存可以醃製的物件。預設為 False。
  • fix_imports: 如果為 True,則嘗試修復載入醃製資料時的相容性問題(對於 Python 2 到 3)。

示例

在這個例子中,我們使用 np.save() 函式將一個二維 NumPy 陣列儲存到二進位制“.npy”檔案中,該函式有效地儲存陣列資料:

import numpy as np

# Create an array
array = np.array([[1, 2, 3], [4, 5, 6]])

# Save the array to a .npy file
np.save('array.npy', array)
print ("File saved!!")

這將產生以下結果:

File saved!!

使用 np.savez() 函式

np.savez() 函式將多個數組儲存到具有“.npz”副檔名的單個檔案中。“.npz”檔案是一個 zip 存檔,其中包含每個陣列的一個“.npy”檔案,可以透過名稱訪問這些檔案。以下是語法:

numpy.savez(file, *args, **kwargs)

其中,

  • file: 將陣列儲存到的檔名或檔案物件。副檔名應為 .npz。
  • *args: 要儲存的陣列。
  • **kwargs: 指定每個陣列名稱的關鍵字引數。

示例

在下面的示例中,我們使用 np.savez() 函式將多個 NumPy 陣列儲存到壓縮的“.npz”檔案中,其中“array1”和“array2”分別儲存它們各自的名稱:

import numpy as np

# Create multiple arrays
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

# Save the arrays to a .npz file
np.savez('arrays.npz', array1=array1, array2=array2)
print ("File saved!!")

以上程式碼的輸出如下:

File saved!!

使用 np.savez_compressed() 函式

np.savez_compressed() 函式與 np.savez() 函式類似,但它會壓縮陣列以減小檔案大小。這對於更有效地儲存大型資料集非常有用。以下是語法:

numpy.savez_compressed(file, *args, **kwargs)

其中,

  • file: 將陣列儲存到的檔名或檔案物件。副檔名應為 .npz。
  • *args: 要儲存的陣列。
  • **kwargs: 指定每個陣列名稱的關鍵字引數。

示例

在這裡,我們使用 np.savez_compressed() 函式將多個 NumPy 陣列儲存到壓縮的“.npz”檔案中,該函式在儲存“array1”和“array2”及其各自名稱的同時減小了檔案大小:

import numpy as np

# Create multiple arrays
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

# Save the arrays to a compressed .npz file
np.savez_compressed('arrays_compressed.npz', array1=array1, array2=array2)
print ("File saved!!")

獲得的輸出如下:

File saved!!
廣告
© . All rights reserved.