Python 有没有一种方法可以在numpy中实现无for循环的递归?
我有以下问题。有一个矩阵Python 有没有一种方法可以在numpy中实现无for循环的递归?,python,numpy,vectorization,recurrent-neural-network,recurrence,Python,Numpy,Vectorization,Recurrent Neural Network,Recurrence,我有以下问题。有一个矩阵X,我需要生成一个矩阵H,这样矩阵H中I/code>行的值由矩阵X的I/code>行和(I-1)矩阵H的行确定 H_{i} = F(X_{i}, H_{i-1}) 为了计算矩阵H的第一行,我们使用矩阵行中的一个特殊列(也就是说,第0行) 有没有一种方法可以在不使用for循环的情况下以矢量化的形式有效地实现此循环?除了显式的for循环之外,没有其他方法(通常)。这是因为无法跨行并行执行此任务(因为每一行都依赖于其他行) 更困难的是,您可以轻松地生成,例如,使用看似无辜的:
X
,我需要生成一个矩阵H
,这样矩阵H
中I/code>行的值由矩阵X
的I/code>行和(I-1)
矩阵H
的行确定
H_{i} = F(X_{i}, H_{i-1})
为了计算矩阵H
的第一行,我们使用矩阵行中的一个特殊列(也就是说,第0行)
有没有一种方法可以在不使用for循环的情况下以矢量化的形式有效地实现此循环?除了显式的for
循环之外,没有其他方法(通常)。这是因为无法跨行并行执行此任务(因为每一行都依赖于其他行)
更困难的是,您可以轻松地生成,例如,使用看似无辜的:x{n+1}=r*x{n*(1-x{n-1})
只有设法找到一个封闭的形式,基本上消除了重复关系,才能找到解决这个问题的方法。但是对于每个递归关系都必须这样做,而且我很确定你甚至不能保证封闭形式的存在…取决于F
,真的。我怀疑有没有一种通用的方法。在物理学的开始,向量作为一种方法被引入,它将一个点的坐标作为一个物体,而不是3个数字。这一想法一直延续到numpy
。在适当的矢量化中,我们通常不关心求值顺序-numpy
应该负责这些细节。因此,一个依赖于评估顺序的计算并不完全合适。像cumsum
这样的操作最接近于编译的顺序操作。