在 meshgrid 上模拟 numpy 向量化函数
Simulate numpy vectorized function on a meshgrid
这是关于如何使用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)
如果我有一个像上面的 xx
、yy
这样的 meshgrid
,但是我的函数是一个不是 vectorized
、[=16= 的常规函数怎么办? ],例如,常规 math.sin
函数 ?
我知道我可以循环遍历 xx
、yy
的 list of lists
,但我想尝试模拟 vectorized
代码。
不在意速度的话可以用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)
这是关于如何使用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)
如果我有一个像上面的 xx
、yy
这样的 meshgrid
,但是我的函数是一个不是 vectorized
、[=16= 的常规函数怎么办? ],例如,常规 math.sin
函数 ?
我知道我可以循环遍历 xx
、yy
的 list of lists
,但我想尝试模拟 vectorized
代码。
不在意速度的话可以用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)