首頁 > 軟體

python讀取npy檔案資料範例

2022-04-14 13:00:16

Numpy binary files (NPY, NPZ)

注:.npy檔案是numpy專用的二進位制檔案。

1. 讀取與儲存

import numpy as np

arr = np.array([[1, 2, 3],
               [4, 5, 6]])
np.save('weight.npy', arr)

loadData = np.load('weight.npy')

print("----type----")
print(type(loadData))
print("----shape----")
print(loadData.shape)
print("----data----")
print(loadData)

至於具體API參見:https://docs.scipy.org/doc/numpy/index.html

2. 實戰案例

在深度神經網路訓練過程中通常需要讀取預訓練權重,預訓練權重通常是 .npy檔案,比如vgg16.npy(https://pan.baidu.com/s/1Ru5FJVSPjYTHZwlmzRwRvQ   提取碼:ygxw)。本次就以分析vgg16.npy為例進行說明。

import numpy as np

# 注意編碼方式
pre_train = np.load("vgg16.npy", allow_pickle=True, encoding="latin1")

print("------type-------")
print(type(pre_train))
print("------shape-------")
print(pre_train.shape)
print("------data-------")
print(pre_train)

這是個啥?為啥shape沒有? 但是可以看出來 pre_train 裡元素應該是一個字典,我們嘗試取出來。

注:ndarray.item()是複製陣列中的一個元素,並將其返回。具體語法參見:https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.item.html?highlight=item#numpy.ndarray.item

import numpy as np

pre_train = np.load("vgg16.npy", allow_pickle=True, encoding="latin1")

data_dic = pre_train.item()

print("------type-------")
print(type(data_dic))
print("------conv1_1  data-------")
print(data_dic['conv1_1'])   # 返回一個列表,該列表有兩個array,表示conv1_1的權重w與偏置b
print("------conv1_1  shape-------")
print((data_dic['conv1_1'][0]).shape)

看看結果:

可以發現,這是第一個折積層的權重引數,輸入channel是3,輸出channel是64。

附:python中 .npy檔案的讀寫操作範例

numpy中的二進位制檔案的讀寫:

save

np.save ("./檔名", 陣列名):以二進位制的格式儲存資料

load

np.load("./檔名.npy"): 函數是從二進位制的檔案中讀取資料

savez

np.savez(’./檔名’,陣列名1,陣列名2,…):savez 函數可以將多個陣列儲存到一個檔案中

(1)save操作

import numpy as np
a=np.arange(5)
np.save('get.npy',a)

(2)load操作

import numpy as np
a=np.load('load.npy')
print(a)

(3)savez操作

import numpy as np
a=np.arange(3)
b=np.arange(4)
c=np.arange(5)
np.savez('array_save.npz',a,b,c)  多個ndarray型別的陣列

總結

到此這篇關於python讀取npy檔案資料的文章就介紹到這了,更多相關python讀取npy檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com