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,它來調控數據的差距調多大,如果想最大的數和最小的差距小一點,那我們就調大這個除數。

當然這兩個參數的作用其實是不純粹的,所以上面的這種方法其實是一種數據縮放的簡化操作。

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