我是python的新手,使用numpy将csv读入数组。所以我使用了两种方法:
方法1
train = np.asarray(np.genfromtxt(open("/Users/mac/train.csv","rb"),delimiter=","))
方法2
with open('/Users/mac/train.csv') as csvfile:
rows = csv.reader(csvfile)
for row in rows:
newrow = np.array(row).astype(np.int)
train.append(newrow)
我不确定这两种方法之间有什么区别?建议使用什么?
我并不担心哪个速度更快,因为我的数据量很小,而是更多地关注结果数据类型的差异。
答案 0 :(得分:2)
您也可以使用熊猫,它使用起来更好,更简单。
import pandas as pd
import numpy as np
dataset = pd.read_csv('file.csv')
# get all headers in csv
values = list(dataset.columns.values)
# get the labels, assuming last row is labels in csv
y = dataset[values[-1:]]
y = np.array(y, dtype='float32')
X = dataset[values[0:-1]]
X = np.array(X, dtype='float32')
答案 1 :(得分:1)
那么结果有什么不同?
genfromtxt
是Numpy Csv阅读器。它返回一个数组。无需额外的asarray
。
第二个表达式是不完整的,看起来会产生一个数组列表,文件的每一行一个。它使用通用的python csv阅读器,除了读取一行并将其拆分为字符串外,它不会做其他事情。