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

时间:2014-03-13 10:49:27

标签: python arrays numpy

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

# 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用于将此类阵列写入磁盘?

1 个答案:

答案 0 :(得分:1)

文档并未说明.tofile()等同于file.write(a.tostring()),它只会提到后者解释如果参数sep的值为""将如何表现。

在第二种方法中,您要创建数组A的副本,存储在B中,然后在文件中写入,而在第一种方法中,则避免使用此中间副本。 / p>

您还应该看看:

np.savetxt()