你如何在python中创建一个3D数组(数据立方体)?

时间:2017-03-10 02:41:56

标签: python arrays numpy 3d

我想知道如何制作一个带有三个1D阵列的简单数据立方体(矩阵),或者是否有更简单的方法。我希望能够在多维数据集的末尾调用特定值,例如cube [0,2,6]。

x = arange(10)
y = arange(10,20,1)
z = arange(20,30,1)

cube = meshgrid(x,y,z)

但是这并没有给出理想的结果,因为它提供了多个数组,并且无法轻松调用特定的数字。我希望能够将此用于大型数据集,以后可以手工完成。谢谢

1 个答案:

答案 0 :(得分:1)

meshgrid顾名思义创建一个正交网格。如果用3个参数调用它,它将是一个3d网格。现在网格是点的三维排列,但每个点有3个坐标。因此meshgrid为每个坐标返回一个数组。

从中获取一个3d数组的标准方法是应用具有三个参数的矢量化函数。这是一个简单的例子:

>>> x = arange(7)
>>> y = arange(0,30,10)
>>> z = arange(0,200,100)
>>> ym, zm, xm = meshgrid(y, z, x)
>>> xm
array([[[0, 1, 2, 3, 4, 5, 6],
        [0, 1, 2, 3, 4, 5, 6],
        [0, 1, 2, 3, 4, 5, 6]],

       [[0, 1, 2, 3, 4, 5, 6],
        [0, 1, 2, 3, 4, 5, 6],
        [0, 1, 2, 3, 4, 5, 6]]])
>>> ym
array([[[ 0,  0,  0,  0,  0,  0,  0],
        [10, 10, 10, 10, 10, 10, 10],
        [20, 20, 20, 20, 20, 20, 20]],

       [[ 0,  0,  0,  0,  0,  0,  0],
        [10, 10, 10, 10, 10, 10, 10],
        [20, 20, 20, 20, 20, 20, 20]]])
>>> zm
array([[[  0,   0,   0,   0,   0,   0,   0],
        [  0,   0,   0,   0,   0,   0,   0],
        [  0,   0,   0,   0,   0,   0,   0]],

       [[100, 100, 100, 100, 100, 100, 100],
        [100, 100, 100, 100, 100, 100, 100],
        [100, 100, 100, 100, 100, 100, 100]]])
>>> cube = xm + ym + zm
>>> cube
array([[[  0,   1,   2,   3,   4,   5,   6],
        [ 10,  11,  12,  13,  14,  15,  16],
        [ 20,  21,  22,  23,  24,  25,  26]],

       [[100, 101, 102, 103, 104, 105, 106],
        [110, 111, 112, 113, 114, 115, 116],
        [120, 121, 122, 123, 124, 125, 126]]])
>>> cube[0, 2, 6]
26