python - 在 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 维数组。
解决方案
重复调用np.concatenate()
是一种反模式。相反,试试这个:
np.concatenate(all_data)
简单,快速。
推荐阅读
- laravel - laravel 在将其设置为 @section() 之前无法使用 @yield() 获取数据
- gcc - How to build and use GoogleTest shared library (.so) using g++ on Linux?
- c++ - Different ways of implementing atomic *=
- pyspark - 如何有效地使用 pyspark mapPartitions 训练 facebook 先知模型?
- javascript - 标记内部 iframe 不起作用
- ios - 如何在 iOS 中创建 ByteBuffer?
- statistics - 方差分析不显着但系数变量显着?
- vue.js - Vue不显示来自数据对象的数据
- python - 使用 xgboost 时出现问题,错误 - “OSError: [WinError 126] The specified module could not be found”
- c++ - 检查失败:1 == NumElements() (1 vs. 2)必须有一个单元素张量