我想知道是否有一种更为有效的方法将我的二维数组重塑为三维数组?以下是工作代码:
import numpy as np
#
# Declaring the dimensions
n_ddl = 2
N = 3
n_H = n_ddl*N
#
# Typical 2D array to reshape
x_tilde_2d = np.array([[111,112,121,122,131,132],[211,212,221,222,231,232],[311,312,321,322,331,332]])
x_tilde_2d = x_tilde_2d.T
#
# Initialization of the output 3D array
x_tilde_reshaped_3d = np.zeros((N,x_tilde_2d.shape[1],n_ddl))
for i in range(0,x_tilde_2d.shape[1],1):
x_tilde_sol = x_tilde_2d[:,i]
x_tilde_sol_reshape = x_tilde_sol.reshape((N,n_ddl))
for j in range(0,n_ddl,1):
x_tilde_reshaped_3d[:,i,j] = x_tilde_sol_reshape[:,j]
以下是原始预期输出:
array([[[111., 112.],
[211., 212.],
[311., 312.]],
[[121., 122.],
[221., 222.],
[321., 322.]],
[[131., 132.],
[231., 232.],
[331., 332.]]])
输出相同,沿轴=2:
x_tilde_reshaped_3d[:,:,0] = np.array([[111., 211., 311.],
[121., 221., 321.],
[131., 231., 331.]])
x_tilde_reshaped_3d[:,:,1] = np.array([[112., 212., 312.],
[122., 222., 322.],
[132., 232., 332.]])
如有任何建议,将不胜感激。谢谢。你知道吗
使最后一个尺寸保持正确顺序的唯一重塑是:
现在只需交换前两个维度:
为什么不直接做一个^{} 呢。似乎没有必要先初始化一个由零组成的三维矩阵,然后按维度填充它们。你知道吗
通过使用
swapaxes(0, 1)
交换第一轴和第二轴可以实现所需的顺序编辑的答案
输出
相关问题 更多 >
编程相关推荐