我有一组7组数据,可通过索引0-6访问。我需要使用6进行训练,1进行测试,需要循环使用,直到达到7种组合为止。
训练 - 0,1,2,3,4,5 测试 - 6
训练 - 1,2,3,4,5,6 测试 - 0
训练 - 2,3,4,5,6,0 测试 - 1
...
训练6,0,1,2,3,4, 测试 - 5
训练数据将是一组整数队列,测试是一个整数队列。我的大脑是炒的,我需要拼命帮助。我只是简单地对它们进行硬编码,但它看起来很可怕,如果我想改变我拥有的数量,那么它将需要重写。
使用模数的很多答案!我只用它来查找偶数数字:)我现在正在测试它是否适用于所有的gettin upvotes
很多很棒的答案!!你们是最棒的! :d
答案 0 :(得分:2)
Modulo是你的朋友。
for(int i = 0; i < set.Length; i++)
{
for(int j = 0; j < set.Length - 1; j++)
{
// Do something with ... set[(i+j)%set.Length];
}
// Test with set[(i+set.Length-1)%set.Length]
}
答案 1 :(得分:1)
简单模数运算将剪切值。
for i in range(7):
v = range(i, i+7)
print [x % 7 for x in v[:-1]], v[-1] % 7
答案 2 :(得分:1)
使用伪C#语法:
int[][] alldata = [[/* training1 */], [ /*training2*/ ], [ /* training3 */ ]];
for (int i = 0; i < alldata.Length; i++)
{
int[][] testdata = new int[][] { alldata[i] };
int[][] traindata = alldata.Where((d, idx) => idx != i).ToArray();
//Do your thing.
}
答案 3 :(得分:1)
我不确定我的数据集是否正确,但这是你要找的吗?
Queue<Int>[] data = new Queue<Int>[7]();
int current;
for(int i=0; i<7; i++) {
current = i;
for(int j=0; j<6; j++) {
training[i].add(data[(current + j)%7]);
current++;
}
testing[i] = data[(current + 6)%7];
}
答案 4 :(得分:1)
以下是我将如何解决这个问题:
void IndicesCycling(int[] indexes, out Queue<Queue<int>> data, out Queue<int> test)
{
data = new Queue<Queue<int>>();
test = new Queue<int>();
for (int i = 0; i < indexes.Length; i++)
{
test.Enqueue(indexes[i]);
Queue<int> tmp = new Queue<int>();
for (int j = 1; j < indexes.Length; j++)
{
tmp.Enqueue(indexes[(i+j)%indexes.Length]);
}
data.Enqueue(tmp);
}
}