double[,,]代表什么?

21

在回答有关double[,]的问题时,我添加了一个LINQPad输出该数据结构的截图:

double[,]

然而,我在想知道double[,,]长什么样,但是LINQPad无法为我可视化它。此外,我还不理解其中所涉及的数据格式:

   int[,,] foo = new int[,,]
   { 
     { 
        { 2, 3}, 
        { 3, 4}
     },
     { 
        { 3, 4},
        { 1, 5} 
     }
   };

有人能为我形象化描述一下吗?


我认为最直接的可视化方式是使用3D立方体。我不知道是否有人想建议一个复杂的2D模型...? - Katana314
@Katana314,请查看https://dev59.com/smMm5IYBdhLWcg3wMswp#18304657,我认为那应该被技术上视为*1D*模型。 - devuxer
7个回答

19
您可以将其视为一组相互叠放的表格。因此,要检索该项,您需要指定一个三元组,该三元组将指定从哪个表格、列和行中获取值。
以下是3x3x3数组的可视化效果:

每个方框都保存了一个输入数字?编辑:根据@Servy在他的答案中的评论,我知道我的问题的答案是“是”。 - Bobson
正确。每个方框都是一个数组位置,然后会保存一个值(如果使用您的示例,则为双精度)。 - Nathan Dace
3
请将 double[,,,,,,] 想象为一个多维数组。;-) - Jeppe Stig Nielsen
@JeppeStigNielsen:double[,,,] 可以被视为 PocketDews 为我们绘制的一组三维表格。double[,,,,] 可以被视为这些组的一组组。double[,,,,,] 可以被看作是一组 那些 组(可能组成了由 PocketDew 的立方体组成的立方体)。double[,,,,,,] 可以被视为一组 那些 组 - 无限循环。 - Kevin
1
没有比可视化一个7维结构更容易的事情了! - Janis F

9

这是一个长方体

它是一个有六个矩形面的三维实体。

你可以进一步想象将该长方体分解为许多小立方体,并且每个小立方体都有一个单独的值。


那么,配对 {2, 3} 在哪里呢(例如)?是相邻立方体的一对吗?还是连接两个角落的线段? - Bobson
@Bobson 在你的例子中,你有8个不同的值,这是一个2x2x2的立方体。{ 2, 3}, { 3, 4}代表了立方体的下半部分,而{ 2, 3}代表了相邻的两个立方体(组成整个立方体的1/4)。 - Servy
1
啊,现在明白了。 - Bobson

8

这是一个三维数组。因此,您需要进行三维表示以可视化它。

您可以考虑使用多个乐高积木创建一个立方体(或更准确地说,是一个长方体),其中每个积木包含1个整数。


3
不是立方体,因为不需要所有维度相等。这是一个长方体。 - Servy
2
是的,但我不确定每个人都知道什么是长方体。 - Cédric Bignon
1
如果您可以使用另一个术语来代表您的意思,那么请尽管使用,但是说它是一个立方体是不正确的。 - Servy
实际上,如果您将数组值表示为立方体而不是正方体,则即使数组的尺寸不相等,也可以将它们压缩以适合立方形容器。只是说一下 :P - Jonathan Graef
@JonathanGraef 只需更改乐高积木的大小: D - Cédric Bignon

3
那将是一个长方体(三维数组)-这可以深入到您想要的任意维度,但在第三维之后,可视化变得非常困难。

您可以将其想象为给定类型的表格堆栈;该类比具有递归性质。

3
这是一个3D数组(2D数组的数组),就像其他人所说的那样。你可以使用这个扩展程序进行可视化。

1
哦,看起来很有趣可以玩。 - Bobson

1

同样可以使用“轴心”格式表示n维数组,例如:

enter image description here

这是一种更易于生成和读取多于两个维度的数组的格式之一。

不错。我希望LINQPad可以以这种方式打印出来。 - Bobson

0
多维数组看起来像一个有6个面的立方体,具有3个属性:宽度、高度和深度。当您确定深度时,将2D数组的页面放入实际的2D数组中,当2D数组的深度大于1时,我们创建3D数组。查看文章以深入了解此概念。并且这篇文章适用于编程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接