我必须建立一种直方图,带有给定的箱子(我不知道这是否是调用它们的最佳名称)。 举例说明:
这些箱子是:
-0.15 | -0.10 | -0.05 | 0.0 | 0.05 | 0.10 | 0.15
作为输入,我有一个矩阵,其值在-0.16,0.16之间,例如, 所以,如果我读了0.0884,我必须把它算作0.10。 我知道,为此,我可以验证这个值适合的范围,即[0.05,0.10]。我可以计算值与其上限和下限之间的差异(绝对值中的每个值)。因此,该值将与具有最小差异的bin一样计数。 但是我找到了如此简单的代码来完成Python中非常复杂的事情,我知道是否有一种简单的方法可以做到这一点。
感谢。
答案 0 :(得分:4)
def get_bin(n, step=0.05):
return step * round(n / step)
示例:
>>> get_bin(0.0884)
0.1
>>> get_bin(-0.027)
-0.05
>>> get_bin(-0.023)
-0.0
此方法在此处有详细描述:https://stackoverflow.com/a/2272174/505154
答案 1 :(得分:0)
你想要一个直方图,所以我假设你想在一个有序的二进制列表中分配点。 所以这里:
bins = ((-0.15,[]), (-0.10,[]), (-0.05,[]), (0.00,[]), (0.05,[]), (0.10,[]), (0.15,[]))
def store(point):
for bin in bins:
if point < bin[0]:
bin[1].append(point)
return
bins[len(bins)-1][1].append(point)
store(0.0884)
bins