有关N-D阵列使用的示例

时间:2014-03-03 10:02:12

标签: python arrays numpy

当我开始学习numpy有N维数组时,我感到很惊讶。我是一名程序员,我认为没有人比2D阵列更多地使用它。实际上我甚至无法超越2D阵列。我不知道如何考虑3D,4D,5D阵列或更多。我不知道在哪里使用它们。

您能否举例说明3D,4D,5D等阵列的使用情况?如果使用numpy.sum(array, axis=5)表示5D阵列会发生什么?

5 个答案:

答案 0 :(得分:1)

一些简单的例子是:

  • n x m二维数组p - 向量表示为n x m x p 3D矩阵,可能是计算图像渐变所致
  • 值的3D网格,例如体积纹理
  • 这些甚至可以在体积渐变的情况下组合,在这种情况下你会得到一个4D矩阵
  • 坚持使用图形范例,添加时间会增加额外的维度,因此时变3D渐变纹理将是5D

numpy.sum(array, axis=5)对5D阵列无效(因为轴从0开始编号)

答案 1 :(得分:0)

很难提出实际应用,但我可以举一个简单的3D示例。

想象一下拍摄3D世界(例如游戏或模拟)并将其分成相同大小的立方体。每个立方体可以包含某种特定值(一个很好的例子是气候建模的温度)。然后矩阵可以用于进一步的操作(简单的,例如计算它的转置,它的行列式等......)。

我最近有一项任务涉及在2D空间中建模流体动力学。我可以很容易地将它扩展到3D工作,这需要我使用3D矩阵。

您可能还希望进一步扩展矩阵以适应时间,这将使它们成为4D。最后,它实际上归结为您正在处理的具体问题。

但最后,2D矩阵仍用于3D图形(使用4x4增强矩阵)。

答案 2 :(得分:0)

例如,3D阵列可用于表示电影,即随时间变化的2D图像。 对于给定时间,前两个轴将给出图像中像素的坐标,并且相应的值将给出该像素的颜色或灰度级。然后第三个轴代表时间。对于每个时段,您都拥有完整的图像。

在此示例中,numpy.sum(array,axis = 2)将在给定像素中集成曝光。如果你想一部在光线不足的情况下拍摄的电影,你可以想到做那样的事情就可以看到任何东西。

答案 3 :(得分:0)

有很多例子......你试图表达它的方式可能是错误的,让我们举一个简单的例子:

  • 你有盒子和一个盒子里面有N个物品。每盒最多可存储100件物品。
  • 你已经在货架上组织了这些盒子。架子允许您存储M个盒子。您可以通过索引识别每个方框。
  • 所有货架都在3层楼的仓库里。因此,您可以使用3个数字识别任何货架:行,列和地板。

然后通过以下方式标识框:行,列,楼层和货架中的索引。

项目由以下标识:行,列,楼层,货架中的索引,框中的索引。

基本上,模拟这个问题的一种方法(不是最好的......)就是使用5D数组。

答案 4 :(得分:0)

它们非常适用于科学计算。例如,现在,我正在运行以4D阵列输出数据的模拟:具体来说

|时间| x位置| y位置z-position |。

几乎所有现代空间模拟都将使用多维数组,以及计算机游戏编程。