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);
}
答案 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];
}
}
这有多大将取决于您计划如何使用结果,但如果不使用更多内存,您将无法获得新数组。