这真是一个好奇心问题。我的代码有效。我有大量的实例,我试图分成不同的组(培训,验证和测试)。它们只列在一个列表中,但重要的是它们保持在23个组中。这是我的实现:
train_end = int(len(instances)*TRAINING_END)
while train_end % CHANNELS != 0:
train_end -= 1
valid_end = int(len(instances)*VALIDATION_END)
while valid_end % CHANNELS != 0:
valid_end += 1
然后我使用[:train_end], [train_end:valid_end], [valid_end:]
对列表进行分区。我觉得在python中采取这么多步骤的一切都有一个更简单的方法。有什么想法吗?
答案 0 :(得分:1)
您可以通过执行以下操作跳过while循环:
train_end = (int(len(instances)*TRAINING_END) // CHANNELS) * CHANNELS
这样做的效果是确保int(len(instances)*TRAINING_END)
可以被CHANNELS
整除。
对于valid_end
,效果相同:
valid_end = (int(len(instances)*VALIDATION_END) // CHANNELS + 1) * CHANNELS