Numpy數組的序列化和反序列化

在處理圖像數據時,有這麼一種需求:圖像通常是一個矩陣數據,需要將矩陣數據通過base64編碼傳輸,傳輸完畢之後解碼還原得到原來的矩陣數據。

 

import numpy as np

import base64

 

matrix_data=[[1,2,3,4],[5,6,7,8]]

 

np_matrix_data = np.asarray(matrix_data)

print "origin matrix:",np_matrix_data

print "origin matrix shape:",np_matrix_data.shape

print "origin matrix data type:",np_matrix_data.dtype

 

data_type = np_matrix_data.dtype

data_shape = np_matrix_data.shape

 

print "b64 encode data"

b64_data =  base64.urlsafe_b64encode(np_matrix_data.tobytes())

 

#transfer data

print "transfer data"

 

print "b64 decode data"

decode_b64_data = base64.urlsafe_b64decode(b64_data)

 

np_data = np.frombuffer(decode_b64_data, dtype=data_type)

print "data to np:",np_data

 

np_data = np_data.reshape(data_shape)

print "data reshape:",np_data

 

 

注意點:

1 保證數據類型和shape前後一致;

2 tobytes和reshape兩者同時有個默認參數order='C'

 

 

參考:

https://codeday.me/bug/20190627/1303298.html

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章