我在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中所做的事情,但对于任意函数。
答案 0 :(得分:1)
对于您的具体情况,如果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])
这适用于任何长度的系数。这里用于切片的语法基本上从该点开始,然后每个第3个元素。