回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想知道是否有一种更为有效的方法将我的二维数组重塑为三维数组?以下是工作代码:</p>
<pre><code>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]
</code></pre>
<p>以下是原始预期输出:</p>
<pre><code>array([[[111., 112.],
[211., 212.],
[311., 312.]],
[[121., 122.],
[221., 222.],
[321., 322.]],
[[131., 132.],
[231., 232.],
[331., 332.]]])
</code></pre>
<p>输出相同,沿轴=2:</p>
<pre><code>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.]])
</code></pre>
<p>如有任何建议,将不胜感激。谢谢。你知道吗</p>