我正在使用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中所做的事情,但对于任意功能。
对于特定情况,如果coefficients
是numpy.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])
这将适用于任何系数。用于切片的语法基本上是从该点开始的,然后占每个第三元素。