请求协助解码numpy数组的未知编码格式
解码序列化的numpy.ndarray对象
要还原这个序列化的numpy数组,可按以下步骤操作:
- 该对象的
values字段是base64编码的zlib压缩字节流,需要先解码再解压,最后转换为numpy数组。
直接运行以下Python代码即可完成解码:
import base64 import zlib import numpy as np # 你的序列化数据 serialized_obj = {'py/object': 'numpy.ndarray', 'values': 'eJxjYGBgkGnVczQGAl07DcezZ86cmeCo7Dhr5syZJ6fLgelSHwnHNCBY5isMlpdYxQdWfz2aA6I+mhmsTvDAPwcQ/TDvh4PHwyqRS6mfHQptua5PvvIOTCc3vwDTwVWPHeRbXwdqPLsHpn9MueEAVL7uefdlh8NfNWL8Oc87AJUt3rDgBJgWWH/YAehMhgX++8G0wo4dEP70zWD6gMJ6hy9/r1S8PLrCwbzTMUF1/2IwP/PBPIesPSWTJZbNAKtrODbZQd2QY42MUT+Yz/C8wyF1VUJI0LxmB1YTQTObGfUO4dEb97+5X+EQaqC1UnhHscM/519vX/fkO2wV/X363eUMB8UNRRkTTyc7HDy10HVbcrzDWWu/ixNlIh2a2/5x6h0IdjgnGXhLeo2/g07ti6Zf7zwcfqyayrn/jjNU3B4qbgEVN4aK6ztsUDgbYXJWw2HDv/OJ++4oO1z7b3lm+nF5h33fzkxicJV0qDoa3G/CIeLgfPLJlXMT+B0cr764yuDK6fD9mbmPCQeLw/l5p6+o/Phvn3WXbev9qJ/2bmw7uw1cv9hDxN/bAwBaO9+O', 'shape': [61], 'dtype': 'float64', 'byteorder': '<'} # 1. 解码base64字符串 base64_decoded = base64.b64decode(serialized_obj['values']) # 2. 解压zlib压缩数据 uncompressed = zlib.decompress(base64_decoded) # 3. 转换为numpy数组并调整形状 result_array = np.frombuffer(uncompressed, dtype=f"{serialized_obj['byteorder']}{serialized_obj['dtype']}").reshape(serialized_obj['shape']) # 输出结果 print(result_array)
代码说明:
- 先用
base64.b64decode解析values字段的编码字符串,得到压缩后的字节数据; - 再用
zlib.decompress解压字节数据,还原为原始的数组字节; - 最后通过
np.frombuffer将字节转换为指定类型的数组,并按给定的shape调整维度。
内容的提问来源于stack exchange,提问作者caspermenjamin
相关产品推荐
相关产品推荐

