有没有办法在没有 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
行的值由矩阵X
的i_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 上分享文本?