如果我有一个像 func(x,y) = cos(x) + sen(y) + x*y 这样的随机函数,如何将它应用于 2 个数组中的所有元素对?
I found https://docs.scipy.org/doc/numpy/reference/ generated/numpy.outer.html和
发现所有基本操作都有外部函数。但如果我想用自定义函数来实现呢?
想象 array1 是 [1,2],array2 是 [3,4],我想要应用的函数称为 f(float, float)
预期输出是
[f(1,3) f(1,4)
f(2,3) f(2,4)]
只要您确保以正确广播的方式编写函数,您就可以这样做
func(x_arr[:, None], y_arr)
将其应用于两个一维数组中的所有元素对x_arr
and y_arr
.
例如,要以广播的方式编写示例函数,您可以将其编写为
def func(x, y):
return np.cos(x) + np.sin(y) + x*y
since np.cos
, np.sin
, +
, and *
跨数组广播和矢量化。
至于不播吗?好吧,有些人可能会建议np.vectorize
,但这有很多棘手的事情你必须记住,比如保持一致的输出dtype
并且没有副作用。如果您的函数不广播,我建议仅使用列表理解:
np.array([[func(xval, yval) for yval in y_arr] for xval in x_arr])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)