【问题标题】:Utility of parameter 'out' in numpy functionsnumpy 函数中参数“out”的实用程序
【发布时间】:2023-03-03 07:26:21
【问题描述】:

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

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

This thread 提供了一些关于如何使用它的信息。但我想知道什么时候应该使用它,有什么好处?

【问题讨论】:

  • 阅读答案了吗?例如。 “控制dtype 是使用out 的一个原因。另一个是通过‘重用’已经存在的数组来节省内存。”
  • @jonrsharpe 是的,我做到了,亲爱的。但我正在寻找更多解释。
  • 然后在您的问题中提及。你从中了解到了什么,还有什么不清楚的地方?提问时尽量具体
  • @jonrsharpe 你能把你的评论作为答案吗? dtype 问题是我来这篇文章寻找的,而其他答案中没有解决。

标签: python performance algorithm numpy parameters


【解决方案1】:

采用out 参数的函数会创建新对象。这通常是您对该函数的期望:提供一些数组并使用转换后的数据获取一个新数组。

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

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

【讨论】:

  • array.cumsum(0,out=array) array.cumsum(1,out=array) array.cumsum(2,out=array) 优于 array.cumsum(0).cumsum(1).cumsum(2)
  • 如果你想保持单线,我认为你应该仍然可以使用array.cumsum(0, out=array).cumsum(1, out=array).cumsum(2, out=array)
猜你喜欢
  • 2014-08-13
  • 2012-03-11
  • 2012-07-18
  • 1970-01-01
  • 2018-05-11
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
相关资源
最近更新 更多