代码之家  ›  专栏  ›  技术社区  ›  Arjun

如何在数据集的特定列中提取元素?

  •  0
  • Arjun  · 技术社区  · 6 年前

    这里是我用来划分数据的代码:

    data=np.genfromtxt("/home/crpsm/Pycharm/DataSet/headbrain.csv",delimiter=',')
    
    
    x=data[:,:1]
    y=data[:, :2]
    

    这是x和y的输出:

    [[3738.]
    [4261.]
    [3777.]
    [4177.]
    [3585.]
    [3785.]
    [3559.]
    [3613.]
    [3982.]
    [3443.]
    

    [[3738. 1297.]
    [4261. 1335.]
    [3777. 1282.]
    [4177. 1590.]
    [3585. 1300.]
    [3785. 1400.]
    [3559. 1255.]
    [3613. 1355.]
    [3982. 1375.]
    [3443. 1340.]
    

    请告诉我如何修复此错误。提前谢谢。。!!!

    2 回复  |  直到 6 年前
        1
  •  1
  •   Graipher    6 年前

    什么 @w-m heir answer 是正确的,您当前正在分配所有行(第一行) : )所有列,从0开始到列1,不包括上限,到 x (与 :1 )所有行(还是第一行) : y (与 :2 ).

    x = data[:, 0]
    y = data[:, 1]
    

    是正确实现这一点的一种方法,但更好、更简洁的方法是使用元组解包:

    x, y = data.T
    

    这就使(`T)数据互换,即交换两个维度,然后第一个维度的长度为2。如果实际数据的列数大于此数,则可以使用:

    x, y, *rest = data.T
    

    rest This syntax was introduced in Python 3.0 .

        2
  •  2
  •   w-m    6 年前

    documentation

    使第二列的形状与 x ,使用 y=data[:, 1:2] .

    注意:您正在使用此索引创建二维数组(形状为(len(data),1))。如果需要1d数组,只需对第二项使用整数,而不是切片:

    x = data[:, 0]
    y = data[:, 1]