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