Python:将并行数组重塑为训练集

Python:将并行数组重塑为训练集,python,numpy,reshape,Python,Numpy,Reshape,我有两个使用meshgrid创建的并行阵列: 现在我想将其转换为NN的(Xn*Yn,2)形状的训练集: [[x_1, y_1], [x_2, y_2], ..., [x_m, y_m]] (where m = Xn * Yn) 怎么做?您可以尝试重塑和堆叠,使用重塑函数将X和Y转换为一列2D数组((Xn,1)代表X,(Yn,1)代表Y),然后水平堆叠: X, Y = np.meshgrid([1,2], [3,4,5]) np.hstack([X.reshape(-1, 1), Y.

我有两个使用meshgrid创建的并行阵列:

现在我想将其转换为NN的(Xn*Yn,2)形状的训练集:

[[x_1, y_1], [x_2, y_2], ..., [x_m, y_m]]

(where m = Xn * Yn)

怎么做?

您可以尝试
重塑
堆叠
,使用
重塑
函数将X和Y转换为一列2D数组((Xn,1)代表X,(Yn,1)代表Y),然后水平堆叠:

X, Y = np.meshgrid([1,2], [3,4,5])    
np.hstack([X.reshape(-1, 1), Y.reshape(-1, 1)])

#array([[1, 3],
#       [2, 3],
#       [1, 4],
#       [2, 4],
#       [1, 5],
#       [2, 5]])
或者@Denis提到的另一个选项:

np.stack((X.ravel(), Y.ravel()), axis=-1)
至于速度,这两个选项具有可比性:

X, Y = np.meshgrid(np.arange(1000), np.arange(1000))

%timeit np.hstack([X.reshape(-1, 1), Y.reshape(-1, 1)])
#100 loops, best of 3: 4.77 ms per loop

%timeit np.stack((X.ravel(), Y.ravel()), axis=-1)
#100 loops, best of 3: 4.89 ms per loop
np.stack((X,Y),axis=-1)?@MaxChrétien I制作(Xn,Yn,2)形状的数组-不是我需要的。工作正常。XY_train=np.stack((X.ravel(),Y.ravel()),axis=-1)是等效的吗?
X, Y = np.meshgrid(np.arange(1000), np.arange(1000))

%timeit np.hstack([X.reshape(-1, 1), Y.reshape(-1, 1)])
#100 loops, best of 3: 4.77 ms per loop

%timeit np.stack((X.ravel(), Y.ravel()), axis=-1)
#100 loops, best of 3: 4.89 ms per loop