我有一个大的csv文件~90k行和355列。前354列对应于不同单词的存在,显示1或0,最后一列显示数值。
例如:
table, box, cups, glasses, total
1,0,0,1,30
0,1,1,1,28
1,1,0,1,55
当我使用时:
d = np.recfromcsv('clean.csv', dtype=None, delimiter=',', names=True)
d.shape
# I get: (89460,)
所以我的问题是:
答案 0 :(得分:3)
np.recfromcsv
会返回1维record array。
如果您有结构化数组,则可以按字段标题访问列:
d['total']
返回总计列。
您可以使用整数索引访问行:
d[0]
例如,返回第一行。
如果您希望选择除最后一行之外的所有列,那么最好使用2D普通NumPy数组。使用普通的NumPy数组(而不是结构化数组),您可以使用整数索引选择除最后一行之外的所有行:
您可以使用np.genfromtxt
将数据加载到2D数组中:
import numpy as np
d = np.genfromtxt('data', dtype=None, delimiter=',', skiprows=1)
print(d.shape)
# (3, 5)
print(d)
# [[ 1 0 0 1 30]
# [ 0 1 1 1 28]
# [ 1 1 0 1 55]]
这选择最后一栏:
print(d[:,-1])
# [30 28 55]
这会选择除最后一列之外的所有内容:
print(d[:,:-1])
# [[1 0 0 1]
# [0 1 1 1]
# [1 1 0 1]]
答案 1 :(得分:0)
好的经过谷歌搜索和时间浪费这是任何人试图让numpy一路走开,以便他们可以阅读CSV并继续Scikit Learn需要做的事情:
# Say your csv file has 10 columns, 1-9 are features and 10
# is the Y you're trying to predict.
cols = range(0,10)
X = np.loadtxt('data.csv', delimiter=',', dtype=float, usecols=cols, ndmin=2, skiprows=1)
Y = np.loadtxt('data.csv', delimiter=',', dtype=float, usecols=(9,), ndmin=2, skiprows=1)
# note how for Y the usecols argument only takes a sequence,
# even though I only want 1 column I have to give it a sequence.