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

 

 

 

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