【问题标题】:Dask Read Data from Binary FileDask 从二进制文件中读取数据
【发布时间】:2018-06-25 13:55:59
【问题描述】:

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

中了解了 dask

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

我的问题是,如果数据非常大,即大于可用内存本身,我该如何加载?我尝试使用 numpy 的 fromFile 函数,但我的内核不知何故死了。我的一些问题是:

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


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

【问题讨论】:

    标签: python


    【解决方案1】:

    我只涉足 Dask,但通过 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 可以使用的东西是值得的。

    【讨论】:

    • this dask blog post 所示,可以从单个文件中创建dask.delayed 对象。但是,如本答案所示将其分块可能并不简单。
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2015-04-23
    • 2018-01-16
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多