2017-09-28 30 views
0

我有一個數組中的值範圍內的numpy的:[0, 255] (ubyte)並希望將其重新映射到新的範圍[0.0, 1.0](float)numpy的擬合值

x = [0, 127, 255] 

應該成爲

x = [0.0, 0.5, 1.0] 

該職位Convert a number range to another range, maintaining ratio是非常一般的方式如何重新映射範圍,但不解釋如何在numpy中方便地進行。

+1

可能出現[將數字範圍轉換爲另一個範圍,保持比例](https://stackoverflow.com/questions/929103/convert-a-number-range-to-another-range-maintaining-ratio) – blacksite

+2

只是'x/255.0' – jdehesa

+0

哇,這很容易@jdehesa!儘管我沒有在其他帖子中看到這個答案。不要認爲這是對numpy的重複。 – user1767754

回答

1

只需使用division'/'操作陣列上:

這適用於操作element-wise,這樣你就可以'divide'array通過255map值的你,就像這樣:

import numpy as np 
x = np.array([0,127,255], dtype="uint8") 
x = x/255 

其給出:

array([0, 0.49803922, 1]) 

它不會給你的結果[0,0.5,1],因爲127不是255的一半!

+0

這段代碼也是錯誤的!有趣的是,似乎有一個部門似乎很難。除了'np'沒有被定義,你將會遇到轉換問題,因爲NumPy會認爲'x'是一個'int'數組,然後你不應該使用'/ ='運算符,而是分成'x = x/255' ,這將強制正確強制自動類型強制。 – norok2

+0

@ norok2對不起!我總是在我的計算機上運行代碼,然後在SO上輸入代碼,我有'import numpy as np'和'np.array([...],dtype =「uint8」)這兩行,我認爲這樣可以解決這兩個問題。你遇到的問題。讓我知道你是否發現了其他問題,因爲我也是'numpy'的新手。謝謝 –

+0

'dtype'的顯式調用不會解決鑄造問題,將會用'x = x/255'替換'x/= 255' – norok2