Python numpy导入数据的错误形状并分隔y值

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返回一维 使用结构化数组时,可

我有一个大的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['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]@沃伦·维克瑟:是的,没错;谢谢你的更正。