python数值大小缩放

最近需要画一个networkx图,其中边的权重来决定线的粗细。原本数据相差特别大,这就导致有的线很粗有的超级细。

于是我们想把一组数据,映射到另一组,使得它们差距小一点。

这个里面其实有很多方法,比如归一化,将一个区间数据映射到另外一区间等等。

我的问题其实可以用比较简单的方式就可以解决:

A = [1,2,3,4,5,6,20,30,100]
B = []
temp_max = max(temp)
temp_min = min(temp)
for ele in A:
    B.append(round(10*(ele-temp_min/4)/(temp_max-temp_min),2))

这里面有两个参数我们需要关注,

第一个就是前面乘数10,其实它是来调控,我们需要将数据放大到多大,比如最大的数据在10三次方量级,那我们就乘以1000.

另一个就是temp_min的除数4,它来调控数据的差距调多大,如果想最大的数和最小的差距小一点,那我们就调大这个除数。

当然这两个参数的作用其实是不纯粹的,所以上面的这种方法其实是一种数据缩放的简化操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章