最近需要畫一個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,它來調控數據的差距調多大,如果想最大的數和最小的差距小一點,那我們就調大這個除數。
當然這兩個參數的作用其實是不純粹的,所以上面的這種方法其實是一種數據縮放的簡化操作。