【问题标题】:How to turn a 3D array into multiple 2D arrays [duplicate]如何将 3D 数组转换为多个 2D 数组 [重复]
【发布时间】:2014-09-16 13:07:06
【问题描述】:

我有一个 3-D 数组中的值数组,存储为 [x,y,z]。 3-D 数组对前一个函数很有用,但在当前函数中,我想要 z 系列的 [x,y] 数组。这可能吗?我拥有的数组是input[x,y,z],我希望将它重做为二维数组。 x 和 y 是二维数组的值。

var dict = new Dictionary<int, double[,]>();
for (int files = 0; files < input.GetLength(2); files++)
{
    dict[files] = input[x,y,files]
}

【问题讨论】:

  • 说 z 是 3 长。我想要的是 3 个二维值数组
  • 这没有意义。一个三维数组就是多个二维数组。
  • 是的,但我希望能够单独调用它们(例如 dict[0]、dict[1]、...等)
  • 是的,但是您的结构不清楚。您可以拥有一个由子子数组组成的子数组,或者您可以拥有一个包含值集的数组。你的结构感觉模棱两可。
  • 您的 z 值是否独一无二?如果不是Dictionary&lt;z, [x,y]&gt; 将不起作用。

标签: c# arrays multidimensional-array


【解决方案1】:
var dict = new Dictionary<int, double[,]>();
for (int files = 0; files < input.GetLength(2); files++)
{
    double[,] twoD = new double[input.GetLength(0), input.GetLength(1)];
    for (int x = 0; x < input.GetLength(0); x++)
        for (int y = 0; y < input.GetLength(1); y++)
            twoD[x, y] = input[x, y, files];
    dict.Add(files, twoD);
}

This SO question 可能也会有所帮助。

请注意,这确实假定您的 z 值是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2017-07-26
    • 1970-01-01
    • 2021-12-29
    • 2013-08-21
    相关资源
    最近更新 更多