2012-06-28 108 views
-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取决于iC#三维阵列,转换排阵

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

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

那是第一行,'new double [1000] [] []'偶编译? – sarnold

+0

?它是一个简单的参差不齐的数组,它编译 – analystLp

+0

@sarnold,是的。它初始化一个包含1000个其他锯齿阵列的数组。 –

回答

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]; 
    } 
} 

是多么有用的是取决于你打算如何使用的结果,但没有使用更多的内存,你不会得到一个新的阵列。

+0

好的我会尝试使用对象由输入和目标数组组成的例子,看看它是怎么回事谢谢 – analystLp