【发布时间】:2014-08-07 19:53:31
【问题描述】:
我目前正在将一些旧的 fortran 代码转换为 python,并希望尽可能多地使用 numpy 样式的操作,以提高速度。 该代码要求查找两个数组的所有元素的乘积,如下所示:
do i=1, nx
do j=1, ny
si(i,j) = xarray(i) * yarray(j)
enddo
enddo
所以我已经像这样矢量化它:
for i, x in enumerate(xarray):
si[i] = x * yarray
但是有没有办法删除 x 上的循环并在一行中生成整个“nx x ny”数组,这可能会更快?
【问题讨论】:
-
当您尝试
si = xarray * yarray时会发生什么? -
这只会产生另一个包含元素 x1*y1、x2*y2、x3*y3 的一维数组