Python 中的批量代数运算

Batch algebraic operations in Python

我在 Python 中使用 for 来填充数组。目前我遍历数组中的所有元素,对于每个索引,我从另一个数组中检索一些相关信息,然后执行一个操作。

这是当前代码

for idx, vertex_color in enumerate(self.vertex_colors):
    coefficients = self.cubic_coefficients[idx*3:(idx*3)+3]

    # Applies cubic regression to obtain regressed mean amplitude
    c[idx] = coefficients[0] * current_beta**2 + coefficients[1] * current_beta + coefficients[2]

但是我的向量 self.vertex_colors 非常大,因此这个 for 循环是我的瓶颈。有没有办法并行化或使用单个命令执行这些操作?在某种程度上,我想做 bsxfun 在 MATLAB 中所做的事情,但对于任意函数。

对于您的具体情况,如果 coefficientsnumpy.array

,您可以不用这种方式进行循环
import numpy

coefficients = numpy.array([1, 2, 3, 1, 2, 3])
current_beta = 1
c = (coefficients[0::3] * current_beta**2 
     + coefficients[1::3] * current_beta 
     + coefficients[2::3])

这适用于任何长度的系数。这里用于切片的语法基本上从点开始,然后取每第 3 个元素。