【问题标题】:From list of dataframe to array of array in python从数据框列表到python中的数组数组
【发布时间】:2023-01-13 19:24:30
【问题描述】:

正如标题所说,我有一个名为“list”的列表,其中包含多个 Dataframes(形状 120 x 120)和一些数字数据,是从之前的列表中添加的。

...
df_sum = list_dataframe[0]
    for i in range (1, len(list_dataframe)):
        df_sum = df_sum.add(list_dataframe[i])

    list.append(df_sum)

假设“列表”包含 800 个数据帧,因此此列表的每个索引都包含一个数据帧。我想要:

  1. 创建一个与“列表”长度相同的数组
  2. 获取“列表”中的每个数据帧,一个接一个,将其转换为 Numpy 数组(120 x 120,因此是一个矩阵)
  3. 将每个 Numpy 数组 (120 x 120) 添加到创建的数组 (800) 中。

    所以我想获得一个数组(长度为 800,与列表相同),其中每个索引都包含 800 个 Numpy 数组(矩阵)之一。

    我已经使用 .to_numpy() 函数应用于带有 for 循环的列表,

    for i in range(len(list)):
        list[i] = list[i].to_numpy()
    

    但它会产生一个奇怪的结构,比如数组数组的数组其中第二个仅包含一个元素,即转换为数组的数据帧:

    >>> list 
    
    >>>[array([[0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.],
            ...,
            [0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.]]),
     array([[0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.],
            [0., 0., 0., ..., 0., 0., 0.],
            ...,
    

    我怎样才能做到这一点?

【问题讨论】:

    标签: python arrays pandas dataframe numpy


    【解决方案1】:

    你在正确的轨道上。如果您在结果列表中调用np.array,它将创建一个形状为(800, 120, 120) 的大数组。使用列表理解而不是 for 循环的示例:

    import numpy as np
    import pandas as pd
    
    my_list = [pd.DataFrame(np.random.randint(10, size=(120, 120))) for _ in range(800)]
    
    out = np.array([df.to_numpy() for df in my_list])
    
    >>> out.shape
    (800, 120, 120)
    

    【讨论】:

    • 我的天啊。英雄所见略同!!!!
    猜你喜欢
    • 1970-01-01
    • 2014-07-04
    • 2021-06-27
    • 1970-01-01
    • 2021-06-26
    • 2011-11-04
    • 2021-05-31
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多