2015-11-19 67 views
1

随着numpy的和python3我不得不以下问题维数n + 1的数组:如何创建给定一个函数返回尺寸的数组n

我有返回的固定整数的2维阵列的功能大小(在这种情况下是2x3)。什么是最常用的方式来运行这个功能n次,并将它们叠加到一个3维2x3xn数组中?性能如何?只有最小数量的分配才会很好。

+2

对于实际表现,这将是有意义的了解该功能本身的实现。它可能可以用NumPy ufuncs等进行矢量化。 – Divakar

+2

'只有最少分配数量的东西才会更好。“ - 这就是C++风格的思维。分配不是会干扰Python性能的。如果您尝试运行此函数而不是利用NumPy矢量化操作,则解释器开销会导致性能下降。 – user2357112

回答

2

您可能正在寻找np.dstack

>>> import numpy as np 
>>> arrs = [np.random.rand(2, 3) for x in range(5)] 
>>> np.dstack(arrs).shape 
(2, 3, 5) 

如果您知道最终的形状,你可以做类似如下:

>>> out = np.empty((2, 3, 5)) 
>>> out[..., 0] = np.random.rand(2, 3) 
相关问题