我正在努力寻找
512 x 512 (262144 elements)
我目前有一个
List<double[,]> data;
尺寸为:
4096 x [8 , 8] (262144 elements)
我正在努力的2D阵列是 square 。
List<List<float>> newList = new List<List<float>(); //working towards
我尝试了以下方面的内容:
for (int i = 0; i < Math.Sqrt(data.Count); i++ ) {
List<float> row = new List<float>();
foreach (double[,] block in data) {
for (int j = 0; j < 8; j++) {
row.Add(block[i,j]); //i clearly out of range
}
}
newList.Add(row);
}
我试图在那里做的是强行蛮力并添加每一行(长度为8),然后将大行添加到newList。
答案 0 :(得分:0)
我相信你可以通过以下方式做到这一点
var newList = new List<List<float>>();
for (int i = 0; i < 512; i++)
{
var innerList = new List<float>();
for (int j = 0; j < 512; j++)
{
int x =(i/8)*64 + (j/8);
int y = i % 8;
int z = j % 8;
innerList.Add(data[x][y,z]);
}
newList.Add(innerList);
}
基本上你有64x64的8x8块。因此,较大的512x512结构的(i,j)坐标以下列方式转换。首先确定8x8块,你必须通过将i和j除以块的大小(8)来计算64x64块结构的行和列,然后将行(i / 8)乘以连续阻塞(64)并添加列(j / 8)。对于y和z,它更简单,因为你知道它只是i和j的余数除以8(i%8)和(j%8)。