-1
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);
}
4

1 回答 1

1

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

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

例如:

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

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

于 2012-06-28T00:32:29.967 回答