只要确保以正确广播的方式编写函数,就可以
f(x_arr[:, None], y_arr)
将其应用到所有对的元素的两个1维阵列x_arr
和y_arr
。
例如,要以广播的方式编写示例函数,应将其编写为
def func(x, y):
return np.cos(x) + np.sin(y) + x*y
因为np.cos
,np.sin
,+
,和*
跨阵列广播和量化。
至于它不广播?好吧,也许有人建议这样做np.vectorize
,但是您需要牢记很多棘手的事情,例如保持一致的输出dtype且没有副作用。如果您的函数不广播,我建议您仅使用列表推导:
np.array([[f(xval, yval) for yval in y_arr] for xval in x_arr])