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很大,因此,循环是我的瓶脖子。无论如何,是否可以并行化或使用单个命令进行此类操作?在某种程度上,我想做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])

这将适用于任何系数。用于切片的语法基本上是从该点开始的,然后占每个第三元素。

相关内容

  • 没有找到相关文章

最新更新