【问题标题】:transform a dataframe into an array with 3d shape (x,y,z)将数据帧转换为具有 3d 形状 (x,y,z) 的数组
【发布时间】:2021-10-22 21:45:58
【问题描述】:

我有一个如下的 DF,我想更改它的格式,以便我得到一个具有以下形状 (3,Y,2) 的数组,其中 3 表示有 3 个标签(ab 和 c),U 是每个标签的行数(因为它们彼此之间有所不同,我没有指定它,它不是对我的导入),2 表示有 2 个特征/列(data_1 和 data_2)[[[1.09,1][5.0,3],[2.1,2][2.0,3],[1.9,4]]]。据我了解,它将是 3d 数组。我想将输出提供给 lstm 模型

label  data_1 data_2
a      1.09   1
b      2.1    2
a      5.0    3
b      2.0    3
c      1.9    4

【问题讨论】:

    标签: python pandas numpy group-by artificial-intelligence


    【解决方案1】:

    如果您对其进行排序,则已将 label 作为您的索引..

    df = df.sort_index(ascending=True)
    

    那么……

    df.to_numpy()
    array([[1.09, 1.  ],
           [5.  , 3.  ],
           [2.1 , 2.  ],
           [2.  , 3.  ],
           [1.9 , 4.  ]])
    

    示例:

    df = pd.DataFrame({'label': {0: 'a', 1: 'b', 2: 'a', 3: 'b', 4: 'c'},
     'data_1': {0: 1.09, 1: 2.1, 2: 5.0, 3: 2.0, 4: 1.9},
     'data_2': {0: 1, 1: 2, 2: 3, 3: 3, 4: 4}})
    
    df = df.set_index('label')
    
        data_1  data_2
    label       
    a   1.09    1
    b   2.10    2
    a   5.00    3
    b   2.00    3
    c   1.90    4
    
    df = df.sort_index(ascending=True)
    print(df.to_numpy())
    
    [[1.09 1.  ]
     [5.   3.  ]
     [2.1  2.  ]
     [2.   3.  ]
     [1.9  4.  ]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多