有没有办法在没有 for 循环的情况下在 numpy 中实现重复?

Posted

技术标签:

【中文标题】有没有办法在没有 for 循环的情况下在 numpy 中实现重复?【英文标题】:Is there a way to implement recurrence in numpy without for-loops? 【发布时间】:2018-07-29 14:33:57 【问题描述】:

我有以下问题。有一个矩阵X,我需要生成一个矩阵H,这样矩阵H 中的i_th 行的值由矩阵Xi_th 行和矩阵(i-1)_th 行确定H.

H_i = F(X_i, H_i-1)

为了计算矩阵H 的第一行,我们使用了一个特殊的矩阵外行(可以说是零行)。

有没有办法以向量化的形式有效地实现这种循环,而不使用 for 循环?

【问题讨论】:

取决于F,真的。我怀疑有一个通用的方法。 在开始的物理学中,vector 被介绍为一种将点的坐标作为一个对象而不是 3 个数字的线程方式。这个想法延续到numpy。在适当的矢量化中,我们通常不关心评估的顺序 - numpy 应该负责这些细节。因此,依赖于评估顺序的计算并不完全适合。像cumsum 这样的操作最接近我们得到的编译顺序操作。 【参考方案1】:

除了显式的for 循环外,没有其他方法(通常)。这是因为无法跨行并行执行此任务(因为每一行都依赖于其他行)。

更难的是,您可以轻松生成chaotic behavior,例如看似无辜的logistic map:x_n+1 = r * x_n * (1 - x_n-1)

如果你设法找到一个封闭的形式,你只能找到解决这个问题的方法,基本上消除了递归关系。但这必须为每个递归关系完成,我很确定你甚至不能保证存在封闭形式......

【讨论】:

以上是关于有没有办法在没有 for 循环的情况下在 numpy 中实现重复?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有换行符的情况下在控制台上使用“放置”?

有没有办法在没有 SDK 的情况下在 facebook messenger 上分享文本?

有没有办法在没有插件的情况下在结帐完成之前上传图片?

如何在没有任何延迟的情况下在android中循环播放音频文件?

有没有办法在没有参数的情况下在其函数中获取数组结构的索引?

有没有办法在没有 Internet 连接的情况下在 webview 中加载网站?