python - 比较将 numpy 数组写入磁盘的两种方法

标签 python arrays numpy

我比较了将 numpy 数组 写入原始二进制文件的两种简单方法:

# method 1
import numpy
A = numpy.random.randint(1000, size=512*1024*1024) # 2 GB
with open('blah.bin', 'wb') as f:
    f.write(A)

# method 2
import numpy
A = numpy.random.randint(1000, size=512*1024*1024) # 2 GB
raw_input()
B = A.tostring()          # check memory usage of the current process here : 4 GB are used !!
raw_input()   
with open('blah.bin', 'wb') as f:
    f.write(B)

使用第二种方法,内存使用量加倍(此处为 4 GB)!

为什么.tostring()经常用于将numpy数组写入文件? (在 http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tofile.html 中,解释了 numpy.ndarray.tofile() 可能等同于 file.write(a.tostring()))

将此类数组写入磁盘时,方法 1 与方法 2 一样正确吗?

最佳答案

文档并没有说 .tofile() 等同于 file.write(a.tostring()),它只是提到了后者来解释如何如果参数 sep 的值为 "",则该参数将起作用。

在第二种方法中,您将创建数组A的副本,存储在B中,然后写入文件,而在第一种方法中,这是避免中间复制。

您还应该查看:

np.savetxt()

关于python - 比较将 numpy 数组写入磁盘的两种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22376218/

相关文章:

python - 为什么 `PyObject_GenericSetAttr` 使用 lambda 时的行为与命名函数不同

如果尝试读取其输出,Python 子进程会挂起

c++ - 从缺少列的文件中读取数据。 C++

C++ 在枚举中有数组值?

python模拟给定理论概率的实际发生次数

python - 二维数组列表的逐像素中值 - numpy

python-3.x - sklearn 中的 K 最近邻 - ValueError : query data dimension must match training data dimension

python - 写入CSV文件时,如何在Python中显示分组结果中的列名称?

python - 再次对 Numpy 数组进行就地类型转换?

c - 为什么我不能初始化我的数组?