将 numpy 数组序列化为 npz 字符串?

pep*_*dip 3 python io numpy

我正在寻找一种从具有不同类型的多个 numpy 数组中生成压缩二进制字符串的方法。:D 这个问题中推荐的方法:

将 numpy 数组作为文件存储和加载

是使用以下内容:

np.savez_compressed('file_name_here.npz', arr_a = a, arr_b = b)
Run Code Online (Sandbox Code Playgroud)

但需要注意的是,我直接需要实际的字符串并且没有将其保存到的路径。有没有什么简单的方法可以直接生成二进制字符串而不保存到磁盘?有什么办法可以做到这一点吗?

rth*_*rth 7

您可以简单地将压缩数组保存到一个StringIO对象中并读取它,

from cStringIO import StringIO
import numpy as np

x = np.ones(10)

f = StringIO()
np.savez_compressed(f, x=x)
f.seek(0)
out = f.read()

print(out)
Run Code Online (Sandbox Code Playgroud)

  • 所以 `np.load(StringIO(out))['x']` 会恢复 `x`。 (3认同)