说我有两个矩阵:
X, Y = np.meshgrid(np.arange(0, 2, 0.1), np.arange(3, 5, 0.1))
还有一个功能,例如:
def func(x) :
return x[0]**2 + x[1]**2
如何填充矩阵Z
(大小为np.shape(X)),其中每个条目都是通过在func
和{的两个对应值上调用X
而形成的。 {1}},即:
Y
有没有办法不使用双嵌套for循环?
答案 0 :(得分:3)
对于给定的numpy数组X
和Y
,您可以这样做 -
Zout = X**2 + Y**2
如果您实际上正在构建X
和Y
,那么可以通过broadcasting
直接获取Z
,从而避免使用np.meshgrid
,所以 -
Zout = np.arange(0, 2, 0.1)**2 + np.arange(3, 5, 0.1)[:,None]**2
答案 1 :(得分:3)
这也可以作为功能评估的矢量化形式:
import numpy as np
X, Y = np.meshgrid(np.arange(0, 2, 0.1), np.arange(3, 5, 0.1))
def func(x) :
return x[0]**2 + x[1]**2
Z = func([X,Y])