【问题标题】:How to import csv file as numpy.array in python? [duplicate]如何在python中将csv文件导入为numpy.array? [复制]
【发布时间】:2014-10-26 05:00:28
【问题描述】:

假设我有一个这种格式的 csv file.csv:

dfaefew,432,1
vzcxvvz,300,1
ewrwefd,432,0

如何将第二列导入为 numpy.array 并将第三列导入为另一列,如下所示:

second = np.array([432, 300, 432])
third = np.array([1, 1, 0])

我在 Ubuntu 中使用 python2.7。

谢谢!

【问题讨论】:

    标签: python csv numpy


    【解决方案1】:

    numpy.genfromtxt() 是这里最好用的东西

    import numpy as np
    csv = np.genfromtxt ('file.csv', delimiter=",")
    second = csv[:,1]
    third = csv[:,2]
    
    >>> second
    Out[1]: array([ 432.,  300.,  432.])
    
    >>> third
    Out[2]: array([ 1.,  1.,  0.])
    

    【讨论】:

    • genfromtxt 在我的用例中比 loadtxt 效果更好,我不得不添加 dtype=None 因为我的数据混合了我正在读取的数据类型。仅供参考....
    【解决方案2】:

    你可以使用numpy.loadtxt:

    In [15]: !cat data.csv
    dfaefew,432,1
    vzcxvvz,300,1
    ewrwefd,432,0
    
    In [16]: second, third = loadtxt('data.csv', delimiter=',', usecols=(1,2), unpack=True, dtype=int)
    
    In [17]: second
    Out[17]: array([432, 300, 432])
    
    In [18]: third
    Out[18]: array([1, 1, 0])
    

    numpy.genfromtxt

    In [19]: second, third = genfromtxt('data.csv', delimiter=',', usecols=(1,2), unpack=True, dtype=None)
    

    参数的唯一变化是我使用了dtype=None,它告诉genfromtxt 从它在文件中找到的值推断数据类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-23
      • 2020-01-10
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多