Python numpy导入数据的错误形状并分隔y值
我有一个大的csv文件~90k行和355列。前354列对应于不同单词的存在,表示1或0,最后一列表示数值 例如: 当我使用:Python numpy导入数据的错误形状并分隔y值,python,csv,numpy,import-from-csv,Python,Csv,Numpy,Import From Csv,我有一个大的csv文件~90k行和355列。前354列对应于不同单词的存在,表示1或0,最后一列表示数值 例如: 当我使用: d = np.recfromcsv('clean.csv', dtype=None, delimiter=',', names=True) d.shape # I get: (89460,) 所以我的问题是: 如何获得二维阵列/矩阵?这有关系吗 如何分离“总计”列,以便创建train, 交叉验证和测试集并训练模型 np.recfromcsv返回一维 使用结构化数组时,可
d = np.recfromcsv('clean.csv', dtype=None, delimiter=',', names=True)
d.shape
# I get: (89460,)
所以我的问题是:
np.recfromcsv
返回一维
使用结构化数组时,可以按字段标题访问列:
d['total']
返回总计列
您可以使用整数索引访问行:
d[0]
例如,返回第一行
如果希望选择除最后一行之外的所有列,那么最好使用二维平面NumPy数组。使用普通NumPy数组(与结构化数组相反),可以使用整数索引选择除最后一行之外的所有行:
d[0]
您可以使用np.genfromtxt
将数据加载到二维数组中:
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]]
这将选择除最后一列以外的所有内容:
print(d[:,-1])
# [30 28 55]
print(d[:,:-1])
# [[1 0 0 1]
# [0 1 1 1]
# [1 1 0 1]]
好吧,在谷歌搜索和浪费时间之后,这是任何试图让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.
谢谢,伙计,我已经做到了。问题是,如何获得除最后一列之外的所有其他列?吹毛求疵:由
recfromcsv
返回的所有记录数组都是一维的。它们一般都不是一维的,不知道你说的那个沃伦是什么意思。真不敢相信在numpy中选择一系列列会如此困难!我不能做一些像X=d[:,0:3];Y=d[:,4]@沃伦·维克瑟:是的,没错;谢谢你的更正。