代码之家  ›  专栏  ›  技术社区  ›  elPastor

numpy csv fromfile()

  •  1
  • elPastor  · 技术社区  · 7 年前

    我可能想在这里重新发明轮子,但努比有一个 fromfile() 可以读取-i imagine-csv文件的函数。

    它看起来非常快,甚至比熊猫还快 read_csv() ,但我不清楚它是如何工作的。

    下面是一些测试代码:

    import pandas as pd
    import numpy as np
    
    # Create the file here, two columns, one million rows of random numbers.
    filename = 'my_file.csv'
    df  = pd.DataFrame({'a':np.random.randint(100,10000,1000000), 'b':np.random.randint(100,10000,1000000)})
    df.to_csv(filename, index = False)
    
    # Now read the file into memory.
    arr = np.fromfile(filename)
    
    print len(arr)
    

    我包括了 len() 最后要确保它不只是一行字。但奇怪的是,我的长度(将根据你的随机数代而变化)是1352244。嗯?

    The docs 显示可选 sep 参数.但当它被使用时:

    arr = np.fromfile(filename, sep = ',')
    

    …长度是0?!

    理想情况下,我可以从这个csv文件中加载一个2d数组,但是我可以从这个csv文件中选择一个数组。

    我错过了什么?

    0 回复  |  直到 7 年前
        1
  •  2
  •   araraonline    7 年前

    numpy.fromfile 不是为了阅读 .csv 相反,它是为读取用 numpy.ndarray.tofile 方法。

    从文档中:

    一种读取具有已知数据类型的二进制数据以及解析简单格式化文本文件的高效方法。 使用tofile方法写入的数据 可以使用此函数读取。

    使用它时没有 sep 参数,numpy假设您正在读取二进制文件,因此长度不同。当你指定一个分隔符时,我想这个函数会中断。

    读一篇 猪瘟病毒 文件使用numpy,我想你可以使用 numpy.genfromtext 或 numpy.loadtxt (从这个 question )