1
随着numpy的和python3我不得不以下问题维数n + 1的数组:如何创建给定一个函数返回尺寸的数组n
我有返回的固定整数的2维阵列的功能大小(在这种情况下是2x3)。什么是最常用的方式来运行这个功能n
次,并将它们叠加到一个3维2x3xn数组中?性能如何?只有最小数量的分配才会很好。
随着numpy的和python3我不得不以下问题维数n + 1的数组:如何创建给定一个函数返回尺寸的数组n
我有返回的固定整数的2维阵列的功能大小(在这种情况下是2x3)。什么是最常用的方式来运行这个功能n
次,并将它们叠加到一个3维2x3xn数组中?性能如何?只有最小数量的分配才会很好。
您可能正在寻找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)
对于实际表现,这将是有意义的了解该功能本身的实现。它可能可以用NumPy ufuncs等进行矢量化。 – Divakar
'只有最少分配数量的东西才会更好。“ - 这就是C++风格的思维。分配不是会干扰Python性能的。如果您尝试运行此函数而不是利用NumPy矢量化操作,则解释器开销会导致性能下降。 – user2357112