gpt4 book ai didi

python - 使用 numpy 进行数组广播

转载 作者:行者123 更新时间:2023-11-28 21:30:14 25 4
gpt4 key购买 nike

如何使用 Python 的隐式循环编写以下循环?

def kl(myA, myB, a, b):
lots of stuff that assumes all inputs are scalars

x, y = meshgrid(inclusive_arange(0.0, xsize, 0.10),\
inclusive_arange(0.0, ysize, 0.10))

for j in range(x.shape[0]):
for i in range(x.shape[1]):
z[j, i] = kl(x[j, i], y[j, i])

我想做类似的事情

z = kl(x, y)

但这给出了:

TypeError: only length-1 arrays can be converted to Python scalars

最佳答案

您所询问的功能仅存在于 Numpy 中,它的名称为 array broadcasting ,不是隐式循环。在数组上广播标量运算的函数称为通用函数,或 ufunc。许多基本的 Numpy 函数都是这种类型。

您可以使用numpy.frompyfunc将现有函数 kl 转换为 ufunc。

kl_ufunc = numpy.frompyfunc(kl, 4, 1)
...
z = kl_ufunc(x + 1.0, y + 1.0, myA, myB)

当然,如果你愿意,你可以调用 ufunc kl 而不是 kl_ufunc,但是 kl 的原始定义将是丢失的。这可能适合您的目的。

关于python - 使用 numpy 进行数组广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443234/

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