C#/ C++:如何可视化多维数组

Mar*_*son 6 c# c++ arrays jagged-arrays

例如:二维数组可以像砖墙一样用方形砖可视化,其中每个砖代表我们阵列中的坐标.三维数组可以以相同的方式可视化为框或立方体.

但是,这是一个棘手的部分,您如何可视化具有多个(超过3个)维度的数组?或者,对于那个部分,如何使用多个维度,但多个维度中的多个维度可视化数组?

例如:如何可视化这样的数组:数组[3,3,3,3] [3,3] [3,3,3,3,3] [3]?

ste*_*esu 10

如何可视化阵列实际上取决于它们的实际用途.如果您使用数组进行空间关系,那么您可以将其想象为多维数据集,但您也无需想象超过3个维度.如果您确实想要实现第四个时间维度,那么您可以想象您的多维数据集随着时间的推移会随着内容的变化而变化.

否则,您可能会跟踪强烈相关的记录.也许每个第一元素都是星系,第二级元素是星团,第三级元素是太阳系,第四级元素是行星,第五级元素是大陆......

在这种情况下,您可以想象它是数组中的数组.如果你需要一个4维数组,那么你可以想象一个立方体,但每个子立方体实际上是一维数组.

如果你需要一个5维数组,那么你可以想象一个立方体,但是每个子立方体都被分成你的"砖墙"例子.

6维是一个立方体,每个子立方体是它自己的分割立方体.

在6个维度之后,这往往会分崩离析.除此之外,通常还有一个更实际的原因,即您需要这么多尺寸.例如,像eHarmony这样的网站通过在20多维空间上使用普通几何来进行匹配.你有一个"幽默"的维度,一个用于"好看的",一个用于"购物的爱"...然后你可以拿两个人并应用距离公式(每个维度差异的正方形,加上这些差异,平方根并确定这两个人的兼容性.因此,如果一个人在我们的9维个性矩阵上得分为"5,3,9,2,8,4,7,3,1"而另一个得分为"9,3,7,1,8,2,8,4" ,7"那么你的兼容性是:

sqrt((5-9)^2+(3-3)^2+(9-7)^2+...)
Run Code Online (Sandbox Code Playgroud)

这可以应用于无限维度并且仍然有效.但是,由于这些尺寸不适用于空间,因此无需将其视为可视化.相反,在这种特殊情况下,我们实际上可以将其想象为具有多个整数值的单维数组.我们可以简化这个数组的原因是,我们的多维数组只包含一个"1",其余的都是"0"(表示此数组中人物的位置).

远离eHarmony示例,重点是 - 在一定数量的尺寸之后,您通常具有阵列的实际目的,这有助于感知它的方法.


Jon*_*nna 5

有些人可以为n> 3精神建模n维几何,至少就简单的形状而言,有些人不能.(当我最近和那些领域推进了n维几何学的人交谈以了解他无法想象一个超立方体时,我感到非常惊讶,而我可以发现他的数学远远超出我的范围).

但这并不是必要的.实际上,很少有特别需要将二维数组可视化为Cartesiancoördinates - 当您在实践中使用二维数组时,每个轴都有一些目的,并且这个目的很快变得比任何视觉表示更重要.

如果确实需要,那么可以考虑将二维数组视为一组有序的一维结构.同样地,三维阵列可以被认为是二维结构的有序集合,或者是一组一维的集合(具有相同大小的这些集合 - 允许不同的大小将事物移动到锯齿状阵列中).

因此,可以将四维阵列视为三维结构的有序集合,等等.