在某些numpy
函数(如cumsum
或cumprod
或其他数学函数)中,out
参数有什么用途?
如果结果非常大,使用out
参数是否有助于提高计算时间或内存效率?
这个线程提供了一些关于如何使用它的信息。但我想知道应该在什么情况下使用它,并且可能的好处是什么?
在某些numpy
函数(如cumsum
或cumprod
或其他数学函数)中,out
参数有什么用途?
如果结果非常大,使用out
参数是否有助于提高计算时间或内存效率?
这个线程提供了一些关于如何使用它的信息。但我想知道应该在什么情况下使用它,并且可能的好处是什么?
带有out
参数的函数将创建新对象。这通常是您从该函数所期望的:提供一些数组,得到一个包含转换数据的新数组。
然而,假设您想连续调用此函数数千次。每个函数调用都会创建一个新数组,这当然需要很多时间。
在这种情况下,您可能希望创建一个输出数组out
,并让函数填充数组的输出。处理数据后,您可以重复使用out
,并让函数覆盖其值。这样,您就不会分配或释放任何内存,这可以节省大量时间。
array.cumsum(0, out=array).cumsum(1, out=array).cumsum(2, out=array)
。 - Jaime
dtype
是使用out
的原因之一。另一个原因是通过“重用”已经存在的数组来节省内存。” - jonrsharpe