【发布时间】:2018-08-01 11:32:22
【问题描述】:
我有大约 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
我在 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 维数组的方法。
【问题讨论】:
-
all_data是什么类型(列表或数组或其他)?如果是数组,它的形状是什么? -
这是
numpy数组的列表! -
这是
numpy数组的列表,其中每个numpy数组的形状为(100, 40000, 4)
标签: python arrays pandas numpy multidimensional-array