从2D矩阵的生成器创建3D矩阵

时间:2019-02-19 15:58:19

标签: python python-3.x pandas numpy dataframe

我正在使用pandas来读取许多.csv文件。每个文件都会产生一个 3x5 数据帧。

dtx = (pd.read_csv(f).values for f in get_filelist(datadirectory))

我想合并来自各个文件的所有数据,以创建一个3维数组(如果我有10个文件,那么我想得到一个形状数组: 10x3x5 )< / p>

我可以创建一个空的python列表,并使用for循环附加在dtx中找到的所有数组,但是我想要一个更pythonic的解决方案。我尝试过

np.concatenate([tf for tf in dtx])

没有达到预期的效果。如何将从.csv文件中读取的所有数据连接到一个大型3D阵列中?

1 个答案:

答案 0 :(得分:2)

您可以向数组添加新维度并将其连接:

dtx = (pd.read_csv(f).values for f in get_filelist(datadirectory))
np.concatenate([tf[np.newaxis] for tf in dtx], axis=0)

示例:

np.concatenate([tf[np.newaxis] for tf in (np.arange(4).reshape((2,2)) for i in range(3))], axis=0)
>> array([[[0, 1],
        [2, 3]],

       [[0, 1],
        [2, 3]],

       [[0, 1],
        [2, 3]]])