首页 > 解决方案 > 将 pandas Dataframes 数组转换为 3D NumPy 数组

问题描述

我有一个 numpy 的 pandas Dataframes 数组,我需要将其转换为形式(样本、行、列)的 3D numpy 数组,以便输入 Keras 模型进行训练。我的数据集中有 46 个样本,每个样本是 1101 行 x 64 列。

这是我的一维 numpy 数据帧数组的代码:

static_dfs = []
#read in static csvs as pandas df
#static files is my np array of csv files
for x in range(0, static_files.size):
  df = pd.read_csv(static_files[x], sep='\t', skiprows=skip_rows, header=(0))
  #append df to list  
  static_dfs.append(df)

#convert list to np array
static_dfs = np.asarray(static_dfs)

实际上,数组的形状是 (46,) [样本数]。如果我查看数组中的一个数据框(例如 static_dfs[0]),则形状为(1101、64)。

然后我尝试将其转换为 3D numpy 数组:

static_nps = []

for x in range(0, static_dfs.size):
  static_nps.append(static_dfs[x].to_numpy())

#convert to numpy array
static_nps = np.asarray(static_nps)

但是它给了我这个错误:

could not broadcast input array from shape (1101,64) into shape (1101)

对于代码行:

    #convert to numpy array
    static_nps = np.asarray(static_nps)

最糟糕的是,我之前也有过它的工作,但我的一个合作者在我们的一个数据文件中发现了一个错误后,检查了我的代码并对其进行了编辑。现在我似乎无法像以前那样恢复工作并且被卡住了:(

我的 3D 阵列所需的形状看起来像 (46, 1101, 64)。如果有人能解决这个问题,你将是一个巨大的帮助!谢谢

标签: pythonarrayspandasnumpy

解决方案


推荐阅读