如何在python中将csv文件导入为numpy.array?

use*_*521 25 python csv numpy

说我有这种格式的csv file.csv:

dfaefew,432,1
vzcxvvz,300,1
ewrwefd,432,0
Run Code Online (Sandbox Code Playgroud)

如何将第二列作为numpy.array导入,将第三列作为另一个列导入如下:

second = np.array([432, 300, 432])
third = np.array([1, 1, 0])
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu中使用python2.7.

先生!

Ano*_*oop 44

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.])
Run Code Online (Sandbox Code Playgroud)

  • 在我的用例中,genfromtxt 比 loadtxt 效果更好,我必须添加 dtype=None,因为我的数据混合了我正在读取的数据类型。仅供参考.... (2认同)

War*_*ser 12

你可以使用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])
Run Code Online (Sandbox Code Playgroud)

要么 numpy.genfromtxt

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

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