C#三维数组,将行转换为数组

时间:2012-06-28 00:21:24

标签: c# .net linq algorithm

var examples = new double[1000][][];

 for (int i = 0; i < 1000; i++)
 {
  examples[i]= new double[2][]; //the Set
  examples[i][0] = new double[] { x(i), y(i) }; //the Inputs
  examples[i][1] = new double[] { Math.Sin(x(i) * y(i)), Math.Sin(x(i) / y(i)) }; //the Target
 }

x(i)表示x取决于i

我需要像examples[][0] = new double[1000][]那样收集输入 因为它会消耗更多的内存来创建像这样的新数组

for (int i = 0; i < 1000; i++)
{
   input[i][0]=x(i);
   input[i][1]=y(i);
}

1 个答案:

答案 0 :(得分:1)

我的第一个想法是重新考虑最终得到[1000] [2] [2]数组的设计决策,你希望通过采用一个特定的中心来拉出扁平的[1000] [2]数组。数组值......

至于在不重新分配内存的情况下访问它,你不会在不使用更多内存的情况下将其作为数组使用,但是你可以做的是获得IEnumerable<double[]>这可能就足够了,这取决于你的使用yield的目的(这将使您在枚举时单独评估每个结果)。

EG:

public IEnumerable<double[]> GetResults()
{
  for (int i = 0; i < 1000; x++)
  {
    yield return examples[i][0];
  }
}

这有多大将取决于您计划如何使用结果,但如果不使用更多内存,您将无法获得新数组。