Python 使用两个阵列之间的行组合创建网格网格

Python 使用两个阵列之间的行组合创建网格网格,python,numpy,Python,Numpy,给定两个形状相同但值不同的二维数组x和y 我想在x和y中的每一行之间创建一个网格数组,如下所示: import numpy as np x = np. array([[ 0. , 2.5, 5. ], [ 0. , 5. , 10. ]]) y = np.array([[ 0. , 0.5, 1. ], [ 0. , 1. , 2. ]]) meshgrids = [] for i in range(x.sha

给定两个形状相同但值不同的二维数组
x
y

我想在x和y中的每一行之间创建一个
网格数组,如下所示:

import numpy as np
x = np. array([[  0. ,   2.5,   5. ],
               [  0. ,   5. ,  10. ]])
y = np.array([[ 0. ,  0.5,  1. ],
              [ 0. ,  1. ,  2. ]])

meshgrids = []
for i in range(x.shape[0]):
    xy = np.array(np.meshgrid(x[i],y[i]))
    xy = np.vstack([xy[1].ravel(), xy[0].ravel()]).T
    meshgrids.append(xy)

meshgrids = np.array(meshgrids)
print repr(meshgrids)

'''
# returns
array([[[  0. ,   0. ],
        [  0. ,   0.5],
        [  0. ,   1. ],
        [  2.5,   0. ],
        [  2.5,   0.5],
        [  2.5,   1. ],
        [  5. ,   0. ],
        [  5. ,   0.5],
        [  5. ,   1. ]],

       [[  0. ,   0. ],
        [  0. ,   1. ],
        [  0. ,   2. ],
        [  5. ,   0. ],
        [  5. ,   1. ],
        [  5. ,   2. ],
        [ 10. ,   0. ],
        [ 10. ,   1. ],
        [ 10. ,   2. ]]])
'''
是否可以在不使用python循环的情况下生成上面的数组?

这里有一种方法-

m1,n1 = x.shape
m2,n2 = y.shape
out = np.empty((m1,n2,n1,2), dtype=np.result_type(x.dtype, y.dtype))
out[:,:,:,0] = y[:,:,None]
out[:,:,:,1] = x[:,None,:]
meshgrids = out.reshape(m1,-1,2)