将三维numpy数组转换为一维数组:
我想重塑一个三维阵列,看起来像这样:
test_3d = np.array([[[0., 0.],
[1., 1.]],
[[2., 2.],
[3., 3.]]])
对于一个看起来像这样的一维阵列:
array([0., 1., 2., 3., 0., 1., 2., 3.])
使用test_3d.flatten()
输出使阵列变平:
array([0., 0., 1., 1., 2., 2., 3., 3.])
np.flatten/ravel和转置功能的组合适用于2-D阵列,但对于3-D阵列,我得到以下结果:
Input:
test_3d.T.flatten()
Output:
array([0., 2., 1., 3., 0., 2., 1., 3.])
有人有什么想法吗?
为了提供一个更具指导性的例子,我将test_3d定义为:
test_3d = np.array(
[[[0., 10.],
[1., 11.]],
[[2., 12.],
[3., 13.]]])
(现在你可以区分两个"初始"零(。
要获得预期结果,请运行:
result = np.transpose(test_3d, (2, 0, 1)).flatten()
结果是:
array([ 0., 1., 2., 3., 10., 11., 12., 13.])
另一种解决方案是:
result = np.rollaxis(test_3d, 2).flatten()