在python中有效地连接许多大型3维数组

时间:2018-08-01 11:32:23

标签: python arrays pandas numpy multidimensional-array

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

方法1

我使用了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

方法2

我在熊猫中创建了面板,然后使用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维数组。

1 个答案:

答案 0 :(得分:3)

反复调用np.concatenate()是一种反模式。相反,请尝试以下操作:

np.concatenate(all_data)

简单,快速。