如何将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()
,它可以猜测数据类型并返回格式正确的记录数组。
上一篇: How to read csv into record array in numpy?
下一篇: How can the euclidean distance be calculated with numpy?