从压缩字节加载 numpy 数组
Load numpy arrays from compressed bytes
我试图将一堆 numpy 数组保存(使用 savez_compressed
)到一个 BytesIO
对象中,然后将它们加载回一个变量。到目前为止,我可以使用以下代码保存数组
# Arrays
a = numpy.random.uniform(size=(10,10)) # dtype is float64
b = numpy.random.uniform(size=(10,10)) # dtype is float64
# Create bytes object
buf = io.BytesIO()
# Save the arrays into the buffer
numpy.savez_compressed(buf, a=a, b=b)
# Closed the buffer
buf.close()
我一直在尝试不同的方法来加载它们。例如
ab = numpy.frombuffer(buf.read(), dtype='float64')
加注 ValueError: buffer size must be a multiple of element size
。并尝试像文件一样加载
ab = numpy.load(buf)
加注 ValueError: Cannot load file containing pickled data when allow_pickle=False
并且当 buf.read()
我得到 ValueError: embedded null byte
.
以下对我有效 [Numpy version: numpy==1.16.1
]:
import numpy
import io
# Arrays
a = numpy.random.uniform(size=(10,10)) # dtype is float64
b = numpy.random.uniform(size=(10,10)) # dtype is float64
# Create bytes object
buf = io.BytesIO()
# Save the arrays into the buffer
numpy.savez_compressed(buf, a=a, b=b)
buf.seek(0)
ab = numpy.load(buf)
print(ab['a'])
print(ab['b'])
# Closed the buffer
buf.close()
我试图将一堆 numpy 数组保存(使用 savez_compressed
)到一个 BytesIO
对象中,然后将它们加载回一个变量。到目前为止,我可以使用以下代码保存数组
# Arrays
a = numpy.random.uniform(size=(10,10)) # dtype is float64
b = numpy.random.uniform(size=(10,10)) # dtype is float64
# Create bytes object
buf = io.BytesIO()
# Save the arrays into the buffer
numpy.savez_compressed(buf, a=a, b=b)
# Closed the buffer
buf.close()
我一直在尝试不同的方法来加载它们。例如
ab = numpy.frombuffer(buf.read(), dtype='float64')
加注 ValueError: buffer size must be a multiple of element size
。并尝试像文件一样加载
ab = numpy.load(buf)
加注 ValueError: Cannot load file containing pickled data when allow_pickle=False
并且当 buf.read()
我得到 ValueError: embedded null byte
.
以下对我有效 [Numpy version: numpy==1.16.1
]:
import numpy
import io
# Arrays
a = numpy.random.uniform(size=(10,10)) # dtype is float64
b = numpy.random.uniform(size=(10,10)) # dtype is float64
# Create bytes object
buf = io.BytesIO()
# Save the arrays into the buffer
numpy.savez_compressed(buf, a=a, b=b)
buf.seek(0)
ab = numpy.load(buf)
print(ab['a'])
print(ab['b'])
# Closed the buffer
buf.close()