按特定顺序将三维numpy.array重塑为一维数组



将三维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()

相关内容

  • 没有找到相关文章