gpt4 book ai didi

python - 避免循环数组来获取 numpy 中元素的乘积

转载 作者:行者123 更新时间:2023-12-01 05:05:09 25 4
gpt4 key购买 nike

我目前正在将一些旧的 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”数组,这可能会更快?

最佳答案

我认为您正在寻找np.outer

>>> nx = np.array([1,2,3,4])
>>> ny = np.array([2,3,4,5])
>>> np.outer(nx, ny)
array([[ 2, 3, 4, 5],
[ 4, 6, 8, 10],
[ 6, 9, 12, 15],
[ 8, 12, 16, 20]])

关于python - 避免循环数组来获取 numpy 中元素的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com