如何将 numpy 数组写入字节内存流?
How to write a numpy array to a byte memorystream?
我在 Python2.7 中对通过 ndarray.tofile(fileHandle,..)
写入 numpy 数组的代码进行单元测试。由于多种原因,在单元测试中执行文件 IO 是不好的,我如何用字节内存流代替文件句柄? (io.BytesIO
无法工作,因为 ndarray.toFile()
要求它提供文件名。)
tempfile.TemporaryFile
适合您的目的吗?
它公开了与普通文件对象相同的接口,因此您可以将它直接传递给np.ndarray.tofile()
,当它被显式关闭或被垃圾回收时,它会立即被删除:
import numpy as np
from tempfile import TemporaryFile
x = np.random.randn(1000)
with TemporaryFile() as t:
x.tofile(t)
# do your testing...
# t is closed and deleted
然而,它会暂时驻留在磁盘上(通常在 Linux 机器上的 /tmp/
中),但我没有看到完全避免 I/O 的简单方法,因为 .tofile()
最终需要一个有效的 OS 级文件描述符。
不应该 tobytes
[1] and frombuffer
[2] 做你需要做的测试吗?
m = np.random.rand(5,3)
b = m.tobytes()
mb = np.frombuffer(b).reshape(m.shape)
我在 Python2.7 中对通过 ndarray.tofile(fileHandle,..)
写入 numpy 数组的代码进行单元测试。由于多种原因,在单元测试中执行文件 IO 是不好的,我如何用字节内存流代替文件句柄? (io.BytesIO
无法工作,因为 ndarray.toFile()
要求它提供文件名。)
tempfile.TemporaryFile
适合您的目的吗?
它公开了与普通文件对象相同的接口,因此您可以将它直接传递给np.ndarray.tofile()
,当它被显式关闭或被垃圾回收时,它会立即被删除:
import numpy as np
from tempfile import TemporaryFile
x = np.random.randn(1000)
with TemporaryFile() as t:
x.tofile(t)
# do your testing...
# t is closed and deleted
然而,它会暂时驻留在磁盘上(通常在 Linux 机器上的 /tmp/
中),但我没有看到完全避免 I/O 的简单方法,因为 .tofile()
最终需要一个有效的 OS 级文件描述符。
不应该 tobytes
[1] and frombuffer
[2] 做你需要做的测试吗?
m = np.random.rand(5,3)
b = m.tobytes()
mb = np.frombuffer(b).reshape(m.shape)