【发布时间】:2012-12-05 04:54:14
【问题描述】:
我有 10 个垃圾箱:
bins = [0,1,2,3,4,5,6,7,8,9]
我有一个包含 25 个值的列表:
values = [10,0,0,14,14,123,235,0,0,0,0,0,12,12,1235,23,234,15,15,23,136,34,34,37,45]
我想按顺序将这些值放入 bin 中,以便将每个值分组到其 bin 中:
binnedValues = [[10,0],[0,14,14],[123,235],[0,0,0],[0,0],[12,12,1235],[23,234],[15,15,23],[136,34,34],[37,45]]
如您所见,bin 中的值的数量并不总是相同,(如len(values) != len(bins))
另外,我有很多不同大小的值列表。所以我需要对相同数量的 bin 执行此操作多次,但值列表长度不同。上面是一个例子——真实的 bin 大小是 10k,真实的 len(values) 是从 ~10k 到 ~750k..
有没有办法始终如一地做到这一点?我需要保持值的顺序,但平均拆分值列表,以便分配到每个箱的值范围的“公平”和“偶数”数量。
我想我可以使用 numpy.digitize,但是看了看,我看不到如何生成“binned”列表
【问题讨论】:
-
按顺序对值进行分箱是什么意思?你能澄清一下吗?
binnedValues的位置看起来有点随意,只是它与原始列表的顺序相同。 -
位置是任意的,因为我试图展示我想要实现的目标。如果 len(values)= 20,那么每个 bin 将有 2 个值。如果 len(values) = 30,那么每个 bin 将有 3 个值。我试图弄清楚当说 len(values) = 27 时如何将值“均匀”分配到 bin 中(所以 7 个 bin 会有 3 个值,而 3 会有 2 个值) - 我怎样才能将不同大小的 bin 均匀分布到bin 范围...更好?
-
如果你有 26 个项目,你的预期输出是什么?
-
6 个 bin 有 3 个值,4 个有 2 个值。具有 2 个关联值的 bin 甚至会分布在整个 bin 范围内。