Python 高效地将numpy数组写入二进制文件

Python 高效地将numpy数组写入二进制文件,python,pandas,numpy,binary,dask,Python,Pandas,Numpy,Binary,Dask,我需要一个将大量数据写入二进制文件的有效解决方案。目前我使用numpy方法.tofile,它占用了大部分运行时。我的MWE: import numpy as np def writeCFloat(f, ndarray): np.asarray(ndarray, dtype=np.float32).tofile(f) def writeCInt(f, ndarray): np.asarray(ndarray, dtype=np.int32).tofile(f) def write

我需要一个将大量数据写入二进制文件的有效解决方案。目前我使用numpy方法
.tofile
,它占用了大部分运行时。我的MWE:

import numpy as np

def writeCFloat(f, ndarray):
    np.asarray(ndarray, dtype=np.float32).tofile(f)
def writeCInt(f, ndarray):
    np.asarray(ndarray, dtype=np.int32).tofile(f)
def writeC80(f, string):
    np.asarray(string, dtype='a80').tofile(f)

if __name__ == "__main__":
    f = open('test.out', mode='wb')
    ndarray = np.zeros((10000,10000))

    writeCInt(f, ndarray)
    writeCFloat(f, ndarray)
    writeC80(f, 'coordinates')

那么,有没有比当前解决方案更有效的方法?提前感谢。

考虑到您的代码中没有显式循环,而且
asarray
的文档中说,如果输入已经是一个ndarray,则不会执行任何复制。我认为没有更快的方法。为什么当前的解决方案太慢?您是否有基准测试表明python可以实现更高的IO速率,或者这是一个需要实时写入大量数据的脚本?谢谢您的回复。我现在做的是读取一个大的二进制文件(~40GB),然后将数据写回另一个二进制文件。我分析了python脚本,发现大部分时间都花在
.tofile
上。所以我想知道是否还有改进的空间,可以用另一种方法将数组、字符串等写入二进制文件?也许是您的一种选择?一般来说,并行性可以给你一个加速,那么问题是你将如何实现它,但这取决于你的用例的细节。你也可以考虑熊猫提供的各种选择(如HDF,羽毛,或拼花地板)和DASK。