numpy将csv文件读取到numpy数组

时间:2018-09-10 06:53:43

标签: python-3.x numpy

我是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)

我不确定这两种方法之间有什么区别?建议使用什么?

我并不担心哪个速度更快,因为我的数据量很小,而是更多地关注结果数据类型的差异。

2 个答案:

答案 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阅读器,除了读取一行并将其拆分为字符串外,它不会做其他事情。