區間對映到區間 in Python

2022-02-25 00:53:46 字數 1632 閱讀 8871

需要情形下,需要將乙個區間對映到另乙個區間。如將0-1對映到10-32之間,應該如何設計演算法?

比如某大學教師在學校規定的掛科機率下進行期末考試,如果學生都考得很差,那麼他就需要根據適當的形式去調整學生的成績。

比如,學生的成績普遍較差,分布在20分到65分之間,那麼需要對映到55-100之間,將及格率調高。

某學生是某國交換生,但是在某國的成績是5-18,但國內的成績是0-100,需要將國外考試的成績反映到國內的成績單上。那麼也就是將5-18對映到0-100,將[5-18] -5 = [0, 13],假設小明的成績是12, 那麼國內的成績就是12*(100/13),原理也就是先歸零,然後再同比例縮放

假設需要縮放的資料是x,需要對映到的範圍是 [a, b], 那麼可以用以下公式來進行。

\[y=a+\frac-x_}.(x-x_)

\]

def map_rate(x:list, to_min:float, to_max:float)->list:

"""區間對映

attribute:

- x: 需要對映的列表

- to_min: 要對映到的最小值

- to_max: 要對映到的最大值

"""x_min=min(x)

x_max=max(x)

return list([round(to_min+((to_max - to_min) / (x_max - x_min)) * i - x_min,1) for i in x])

這個**比較簡單,引數就是上述所提到的三個引數:需要對映的列表, 要對映到的 start 和 end, 最後的結果 round(x, 2)了一下,保留一位小數,否則得到的結果太過精確。

如隨機生成的學生成績=,再將他們對映到某一範圍。

x=[67, 45, 81, 95, 23, 77, 65, 32, 55, 22]

map_rate(x, 60, 100)

結果是

[74.7, 62.7, 82.4, 90.1, 50.6, 80.2, 73.6, 55.5, 68.1, 50.1]
有點好奇這樣是否會影響其分布,推測不會,因為是同比例縮放。於是使用了葡萄牙某中學學生在校成績資料集,**是:

用上述方法,對數學的成績分布進行了驗證。

data1=pd.read_csv("./學生成績.csv",encoding='utf8')

with open("./result.csv",'w',encoding='utf8') as f:

result_list="\n".join([str(i) for i in map_rate(list(data1['g3']),60,100)])

f.writelines(result_list)

結果如圖所示。

可以看到,基本沒有變化,但是會有部分變化,這是因為分布的分箱不同導致的。

區間 區間合併

用x,y表示乙個整數範圍區間,現在輸入一組這樣的範圍區間 用空格隔開 請輸出這些區間的合併。輸入描述 一行整數,多個區間用空格隔開。區間的逗號是英文本元。輸出描述 合併後的區間,用過空格隔開,行末無空格示例1 1,3 2,51,5示例2 1,3 2,5 8,10 11,151,5 8,10 11,1...

區間貪心問題小結(區間選點,區間覆蓋,區間選取)

貪心演算法 思想 什麼是貪心演算法,什麼算得上是貪心 貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,只做出在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性...

區間問題 區間選點 區間問題 貪心

玄學的貪心問題,一般全憑直覺。貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。905.區間選點 貪心思路 證明 時間複雜度 o n logn o nlogn o nlog n include include using namespace std const...