我需要一种高效的解决方案来将大量数据写入二进制文件。目前我使用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,则不执行复制,我认为这可能是最快的方法。 - mkrieger1dask
对你来说是一个选择?通常并行化可以提高速度,问题在于如何实现它,但这取决于你使用情况的细节。 - a_guest