如何将csv读入numpy的记录数组?

我想知道是否有直接的方式将csv文件的内容导入到记录数组中,这与R的read.table()read.delim()read.csv()系列将数据导入R数据框?

或者是使用csv.reader()并应用像numpy.core.records.fromrecords()这样的最好方法?


您可以使用Numpy的genfromtxt()方法来完成此操作,方法是将delimiter kwarg设置为逗号。

from numpy import genfromtxt
my_data = genfromtxt('my_file.csv', delimiter=',')

有关该功能的更多信息可在其各自的文档中找到。


我会推荐pandas库的read_csv函数:

import pandas as pd
df=pd.read_csv('myfile.csv', sep=',',header=None)
df.values
array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

这给出了一个熊猫DataFrame - 允许许多有用的数据处理函数,这些函数不能直接用于numpy记录数组。

DataFrame是一个带有可能不同类型列的二维标签数据结构。 你可以把它想成电子表格或SQL表格......


我也会推荐genfromtxt 。 但是,由于问题需要一个记录数组,而不是普通数组,所以需要将genfromtxt dtype=None参数添加到genfromtxt调用中:

给定一个输入文件, myfile.csv

1.0, 2, 3
4, 5.5, 6

import numpy as np
np.genfromtxt('myfile.csv',delimiter=',')

给出一个数组:

array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

np.genfromtxt('myfile.csv',delimiter=',',dtype=None)

给出一个记录数组:

array([(1.0, 2.0, 3), (4.0, 5.5, 6)], 
      dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<i4')])

这具有可以轻松导入多种数据类型(包括字符串)的文件的优点。


您也可以尝试recfromcsv() ,它可以猜测数据类型并返回格式正确的记录数组。

链接地址: http://www.djcxy.com/p/50981.html

上一篇: How to read csv into record array in numpy?

下一篇: How can the euclidean distance be calculated with numpy?