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)