numpy.load#

numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII', *, max_header_size=10000)[原始碼]#

.npy.npz 或 pickle 檔案載入陣列或 pickled 物件。

警告

載入包含物件陣列的檔案會使用 pickle 模組,這對於錯誤或惡意建構的資料並不安全。考慮傳遞 allow_pickle=False 以載入已知不包含物件陣列的資料,以便更安全地處理不受信任的來源。

參數:
file檔案類物件、字串或 pathlib.Path

要讀取的檔案。檔案類物件必須支援 seek()read() 方法,且必須始終以二進位模式開啟。Pickled 檔案要求檔案類物件也支援 readline() 方法。

mmap_mode{None, ‘r+’, ‘r’, ‘w+’, ‘c’}, 選用

若非 None,則記憶體對應檔案,使用給定的模式(請參閱 numpy.memmap 以取得模式的詳細說明)。記憶體對應陣列會保留在磁碟上。但是,它可以像任何 ndarray 一樣存取和切片。記憶體對應對於存取大型檔案的小片段而無需將整個檔案讀取到記憶體中特別有用。

allow_picklebool, 選用

允許載入儲存在 npy 檔案中的 pickled 物件陣列。不允許 pickle 的原因包括安全性,因為載入 pickled 資料可能會執行任意程式碼。如果禁止 pickle,則載入物件陣列將會失敗。預設值:False

fix_importsbool, 選用

僅在 Python 3 上載入 Python 2 產生的 pickled 檔案時有用,其中包括包含物件陣列的 npy/npz 檔案。如果 fix_imports 為 True,pickle 將嘗試將舊的 Python 2 名稱對應到 Python 3 中使用的新名稱。

encodingstr, 選用

讀取 Python 2 字串時要使用的編碼。僅在 Python 3 中載入 Python 2 產生的 pickled 檔案時有用,其中包括包含物件陣列的 npy/npz 檔案。不允許使用 ‘latin1’、‘ASCII’ 和 ‘bytes’ 以外的值,因為它們可能會損壞數值資料。預設值:‘ASCII’

max_header_sizeint, 選用

標頭允許的最大大小。大型標頭可能無法安全地載入,因此需要明確傳遞更大的值。請參閱 ast.literal_eval 以取得詳細資訊。當傳遞 allow_pickle 時,此選項會被忽略。在這種情況下,檔案根據定義是受信任的,且此限制是不必要的。

傳回值:
result陣列、元組、字典等。

儲存在檔案中的資料。對於 .npz 檔案,傳回的 NpzFile 類別實例必須關閉,以避免洩漏檔案描述器。

引發:
OSError

如果輸入檔案不存在或無法讀取。

UnpicklingError

如果 allow_pickle=True,但檔案無法載入為 pickle。

ValueError

檔案包含物件陣列,但給定 allow_pickle=False

EOFError

當對同一個檔案控制代碼多次呼叫 np.load 時,如果所有資料都已讀取完畢

另請參閱

save, savez, savez_compressed, loadtxt
memmap

建立記憶體對應到儲存在磁碟檔案中的陣列。

lib.format.open_memmap

建立或載入記憶體對應的 .npy 檔案。

註解

  • 如果檔案包含 pickle 資料,則會傳回儲存在 pickle 中的任何物件。

  • 如果檔案是 .npy 檔案,則會傳回單一陣列。

  • 如果檔案是 .npz 檔案,則會傳回類似字典的物件,其中包含 {filename: array} 鍵值對,每個檔案在封存檔中對應一組鍵值對。

  • 如果檔案是 .npz 檔案,則傳回值支援上下文管理器協定,其方式與 open 函數類似

    with load('foo.npz') as data:
        a = data['a']
    

    當退出 ‘with’ 區塊時,底層的檔案描述器會被關閉。

範例

>>> import numpy as np

將資料儲存到磁碟,然後再次載入

>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
>>> np.load('/tmp/123.npy')
array([[1, 2, 3],
       [4, 5, 6]])

將壓縮資料儲存到磁碟,然後再次載入

>>> a=np.array([[1, 2, 3], [4, 5, 6]])
>>> b=np.array([1, 2])
>>> np.savez('/tmp/123.npz', a=a, b=b)
>>> data = np.load('/tmp/123.npz')
>>> data['a']
array([[1, 2, 3],
       [4, 5, 6]])
>>> data['b']
array([1, 2])
>>> data.close()

記憶體對應儲存的陣列,然後直接從磁碟存取第二列

>>> X = np.load('/tmp/123.npy', mmap_mode='r')
>>> X[1, :]
memmap([4, 5, 6])