Python中的批处理代数运算

时间:2017-06-26 15:18:19

标签: python performance for-loop batch-processing bsxfun

我在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中所做的事情,但对于任意函数。

1 个答案:

答案 0 :(得分:1)

对于您的具体情况,如果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个元素。