从二进制文件读取数据

时间:2018-06-25 13:56:00

标签: python

我正在尝试在python中实现k均值聚类算法的核心处理版本。我从这个git项目K-Mean Parallel ... Dask ...

中学到了技巧

我使用相同的git项目,但是试图加载二进制文件形式的数据。二进制文件包含每个具有1024个浮点特征的数据点。

我的问题是,如果数据非常大,即大于可用内存本身,该如何加载数据?我尝试使用numpy的fromFile函数,但是我的内核以某种方式死亡。我的一些问题是:

  问:是否可以将数据加载到由其他来源创建的numpy中(文件不是由numpy创建的,而是由C脚本创建的)?


  问:是否有dask的模块可以直接从二进制文件加载数据?我见过使用过的csv文件,但与二进制文件无关。

1 个答案:

答案 0 :(得分:1)

我只涉猎Dask,但是通过延迟在下面的代码中调用np.fromfile会使您懒惰地使用它。就是说,我自己在做这个,所以目前这是部分答案。

第一个问题:目前,我使用类似的代码加载由Labview程序创建的.bin文件,没有问题:

import numpy as np
method = "b+r"  # binary read method
chunkSize = 1e6 # chunk as needed for your purposes
fileSize = os.path.getsize(myfile) 
data = []
with open(myfile,method) as file:
    for chunk in range(0,fileSize,chunkSize):
        data.append(np.fromfile(file,dtype=np.float32,chunk))

第二个问题:我无法在Dask中找到用于处理二进制文件的任何内容。我发现转换为Dask可以使用的东西是值得的。