numpy迭代两个2d数组

时间:2016-01-02 18:41:57

标签: python arrays numpy vectorization

说我有两个矩阵:

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循环?

2 个答案:

答案 0 :(得分:3)

对于给定的numpy数组XY,您可以这样做 -

Zout = X**2 + Y**2

如果您实际上正在构建XY,那么可以通过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])