Python中的批代数运算

Python中的批代数运算,python,performance,for-loop,batch-processing,bsxfun,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 am

我使用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]

但是我的vector self.vertex_颜色非常大,所以这个for循环是我的瓶颈。这种操作是否需要并行化或使用单个命令执行?在某种程度上,我想做bsxfun在MATLAB中所做的事情,但是对于任意函数。

对于您的特定情况,如果系数是numpy.array,则可以不使用循环


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

您尝试过使用np.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])