NumPy函数中'out'参数的作用是什么?

21

在某些numpy函数(如cumsumcumprod或其他数学函数)中,out参数有什么用途?

如果结果非常大,使用out参数是否有助于提高计算时间或内存效率?

这个线程提供了一些关于如何使用它的信息。但我想知道应该在什么情况下使用它,并且可能的好处是什么?


1
你有过答案吗?例如:“控制dtype是使用out的原因之一。另一个原因是通过“重用”已经存在的数组来节省内存。” - jonrsharpe
3
是的,亲爱的,我翻译了。但我想要更多的解释。 - Sounak
1
然后在你的问题中提到这一点。你从中理解了什么,有什么不清楚的地方吗?提问时尽量具体明确 - jonrsharpe
@jonrsharpe,你能把你的评论变成一个答案吗?dtype问题是我来到这篇文章寻找的,而在其他答案中并没有解决。 - zozo
1个回答

26

带有out参数的函数将创建新对象。这通常是您从该函数所期望的:提供一些数组,得到一个包含转换数据的新数组。

然而,假设您想连续调用此函数数千次。每个函数调用都会创建一个新数组,这当然需要很多时间。

在这种情况下,您可能希望创建一个输出数组out,并让函数填充数组的输出。处理数据后,您可以重复使用out,并让函数覆盖其值。这样,您就不会分配或释放任何内存,这可以节省大量时间。


1
array.cumsum(0, out=array) array.cumsum(1, out=array) array.cumsum(2, out=array) 比 array.cumsum(0).cumsum(1).cumsum(2) 更好。 - Sounak
5
如果你想保持一行代码,我认为你仍然可以使用array.cumsum(0, out=array).cumsum(1, out=array).cumsum(2, out=array) - Jaime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接