【问题标题】:read data to numpy array读取数据到 numpy 数组
【发布时间】:2018-07-21 17:18:43
【问题描述】:

我在下面有一个文件

label,feature
0,70 80 90 50 33 58 ...
2,53 56 84 56 25 12 ...
1,32 56 84 89 65 87 ...
...
2,56 48 57 56 99 22 ...
4,25 65 84 54 54 15 ...

我希望数据可以是

Ytrain = [0,2,1,...2,4]  (int, ndarray)
Xtrain = [[70 80 90 50 33 58...],
          [53 56 80 56 25 12...],
          ...
          [25 65 84 54 54 15...]] (int, ndarray)

这是我的代码

data = pd.read_csv('train.csv')
Ytrain = np.array(data.iloc[:, 0]).astype(int)
train = np.array(data.iloc[:, 1:]).astype(str)

Xtrain = []
for i in range(len(train)):
    tmp = [int(x) for x in train[i][0].split()]
    Xtrain.append(tmp)
Xtrain = np.array(Xtrain)

你有更好的方法吗?

【问题讨论】:

    标签: python string pandas numpy int


    【解决方案1】:

    将多个分隔符添加到read_csvheader=Noneskiprows=1 用于未读取的csv 标头:

    data = pd.read_csv('train.csv', sep="[,\s+]", header=None, skiprows=1, engine='python')
    print (data)
       0   1   2   3   4   5   6
    0  0  70  80  90  50  33  58
    1  2  53  56  84  56  25  12
    2  1  32  56  84  89  65  87
    3  2  56  48  57  56  99  22
    4  4  25  65  84  54  54  15
    

    最后选择iloc

    Ytrain = data.iloc[:,0].values
    Xtrain = data.iloc[:,1:].values
    

    或将splitexpand=True 一起用于DataFrame

    data = pd.read_csv('train.csv')
    Ytrain = data.iloc[:,0].values.astype(int)
    Xtrain = data.iloc[:,1].str.split(expand=True).values.astype(int)
    
    print (Ytrain)
    [0 2 1 2 4]
    
    print (Xtrain)
    [[70 80 90 50 33 58]
     [53 56 84 56 25 12]
     [32 56 84 89 65 87]
     [56 48 57 56 99 22]
     [25 65 84 54 54 15]]
    

    【讨论】:

      【解决方案2】:

      您可以为此使用numpy。由于您有多个分隔符,因此需要做更多工作。

      import numpy as np
      
      s = open('train.csv', 'r').read().replace(',', ' ')
      arr = np.genfromtxt(s)
      
      Ytrain = arr[:, 1]
      Xtrain = arr[:, 1:]
      

      【讨论】:

      • @Sam,已更新 - 使用open 玩转/google,应该可以将其输入genfromtxt
      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多