首页 > 解决方案 > 我想将 2D numpy 数组转换为 3D 数组,但有一个问题

问题描述

我将使用形状为 (4,4) 的简单二维数组作为示例:

array([[0, 2, 6, 3],
   [3, 7, 3, 9],
   [0, 8, 3, 4],
   [4, 6, 2, 1]])

并将其可视化:二维阵列

我想将其转换为 3D 数组,以便沿 z 轴复制值,如下所示: 3D 阵列

使生成的数组具有形状 (4,4,3)

这看起来很简单,但我似乎想不出任何办法来做到这一点。

编辑:我np.tile从下面的答案中尝试过,但是我希望输出是这样的:

array([[[0, 0, 0],
    [2, 2, 2],
    [6, 6, 6],
    [3, 3, 3]],

   [[3, 3, 3],
    [7, 7, 7],
    [3, 3, 3],
    [9, 9, 9]],

   [[0, 0, 0],
    [8, 8, 8],
    [3, 3, 3],
    [4, 4, 4]],

   [[4, 4, 4],
    [6, 6, 6],
    [2, 2, 2],
    [1, 1, 1]]])

我尝试更改复制和重塑的轴,尽管它不起作用。

标签: pythonarraysnumpy

解决方案


你可以用numpy.tile这个

>>> import numpy as np
>>> data = np.array([[0, 2, 6, 3],
                     [3, 7, 3, 9],
                     [0, 8, 3, 4],
                     [4, 6, 2, 1]])
>>> np.tile(data, (3,1,1))
array([[[0, 2, 6, 3],
        [3, 7, 3, 9],
        [0, 8, 3, 4],
        [4, 6, 2, 1]],

       [[0, 2, 6, 3],
        [3, 7, 3, 9],
        [0, 8, 3, 4],
        [4, 6, 2, 1]],

       [[0, 2, 6, 3],
        [3, 7, 3, 9],
        [0, 8, 3, 4],
        [4, 6, 2, 1]]])

推荐阅读