如何将CSV文件导入为NumPy数组?

34

假设我有一个CSV文件.csv,其格式如下:

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

如何将第二列作为NumPy数组导入,将第三列作为另一个类似的数组:

second = np.array([432, 300, 432])
third = np.array([1, 1, 0])
2个回答

58

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.])

2
genfromtxt在我的使用情况下比loadtxt更好,并且我不得不添加dtype=None,因为我读取的数据有多种数据类型。只是提供信息... - Nikhil Gupta

14
你可以使用 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从文件中找到的值来推断数据类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接