【发布时间】:2020-07-14 17:08:22
【问题描述】:
我有 3 个独立的 numpy.array 并且需要在一个循环中将它们与另外 3 个连接数千次。为了性能起见,我想知道是否有某种方法可以通过一个 numpy.concatenate() 调用来完成这 3 个连接。
现在我有:
arr1 = np.concatenate([arr1, _arr1])
arr2 = np.concatenate([arr2, _arr2])
arr3 = np.concatenate([arr3, _arr3])
我想只用一个电话就可以得到相同的结果,例如:
arr = [arr1, arr2, arr3]
_arr = [_arr1, _arr2, _arr3]
arr = np.concatenate([arr, _arr])
这有可能吗?如果没有,最好的方法是什么?
输入和期望输出的示例:
#Inputs
arr1 = [1,2]
arr2 = [3,4]
arr3 = [5,6]
_arr1 = [-1,-2]
_arr2 = [-3,-4]
_arr3 = [-5,-6]
#Output
arr = [[1,2,-1,-2], [3,4,-3,-4], [5,6,-5,-6]]
【问题讨论】:
-
您能否确认,如果您的所有输入数组都是形状 (3,),您希望
arr是什么形状? -
如果您正在寻找优化,也许您应该考虑将循环重写为矢量化操作。 Python 在循环中真的很慢。您可能想在这里分享更多代码。
-
不要在循环中重复
concatenate。concatenate获取数组列表np.concatenate([arr1_1, arr1_2, arr1_3, ...])。构建该列表(附加列表),并在最后执行一个concatenate。 -
请提供预期的输入和输出示例
标签: python numpy concatenation