Я хочу создать сегменты для List<double>
, например, разделить на n
группы, например:
List<double> list = new List<double>() {
0, 0.1, 1.1, 2.2, 3.3, 4.1, 5.6, 6.3, 7.1, 8.9, 9.8, 9.9, 10
};
n = 5
Я хочу получить что-то вроде этого
bucket values
---------------------------------
[0 .. 2] -> {0, 0.1, 1.1}
[2 .. 4] -> {2.2, 3.3}
...
[8 .. 10] -> {8.9, 9.8, 9.9, 10}
Проблема в том, что если я делаю GroupBy
, используя:
return items
.Select((item, inx) => new { item, inx })
.GroupBy(x => Math.Floor(x.item / step))
.Select(g => g.Select(x => x.item));
Я всегда получаю нежелательное первое или последнее ведро, например [10 .. 12]
(обратите внимание, что все значения находятся в диапазоне [0 .. 10]
) или [0 .. 0]
(обратите внимание на неправильный диапазон корзины), который содержит только экстремальные значения (0
или 10
в приведенном выше примере).
любая помощь ?
step
? Я вообще не понимаю этого вопроса. - person John Wu   schedule 16.03.2021