首页 > 解决方案 > 在 python 中有效地连接许多大型 3 维数组

问题描述

我有大约 100 个numpy数组。它们中的每一个都具有 (100, 40000, 4) 的形状。我想将这些数组沿第一个轴连接起来,即axis=0有效地连接成一个大数组。

方法一

我使用np.concatenate如下图-

def concatenate(all_data):
    for index, data in enumerate(all_data):
        if index == 0:
            arr = data.copy()
        else:
            arr = np.concatenate((arr, data), axis=0)
    return arr

方法二

我在 pandas 中创建了面板,然后使用pd.concat如下所示-

def concatenate(all_data):
    for index, data in enumerate(all_data):
        if index == 0:
            pn = pd.Panel(data)
        else:
            pn = pd.concat([pn, pd.Panel(data)])
    return pn # numpy array can be acquired from pn.values 

第二种方法似乎比第一种更快。但是,这种方法在创建pd.Panel.

我想知道是否存在更好的方法来在 python 中连接大型 3 维数组。

标签: pythonarrayspandasnumpymultidimensional-array

解决方案


重复调用np.concatenate()是一种反模式。相反,试试这个:

np.concatenate(all_data)

简单,快速。


推荐阅读