Python循环优化涉及2D数组和重复的1D数组的按元素乘积

时间:2019-07-13 13:02:51

标签: python numpy

当要优化像这样的循环时,是否存在numpy函数或其他任何功能?

for i in range(0,n):
  a[i, 0:p] = b[i, 0:p] * c[0:p]

在这里,c [0:p]是一维数组(与i索引无关),可以在循环之前存储一次以节省一些计算量。但是,我更想知道是否存在一个可以代替for循环本身的函数,该函数相当慢。

1 个答案:

答案 0 :(得分:1)

如您所指出的那样,可能不需要循环。

assert (c[0:p]).shape == (p,)

以及

assert (a[0:n, 0:p]).shape == (n, p)
assert (b[0:n, 0:p]).shape == (n, p)

您可以直接执行矩阵乘法和赋值来代替循环:

a[0:n, 0:p] = b[0:n, 0:p] * c[0:p]