这是关于如何使用numpy.meshgrid
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
如果上面有meshgrid
xx
,yy
,但我的函数是非vectorized
,f(x,y)
的常规函数,该怎么办?例如,常规math.sin
函数?
我知道我可以遍历list of lists
xx
,yy
,但我想尝试模拟vectorized
代码。
答案 0 :(得分:1)
如果您不关心速度,可以使用numpy.vectorize()
:
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y, sparse=True)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)
import math
def f(x, y):
return math.sin(x**2 + y**2) / (x**2 + y**2)
np.allclose(np.vectorize(f)(xx, yy), z)