2011-07-18 18 views
0

我使用numpy來建立一個數學代碼的原型。我的數學只包含了我進行矩陣運算的概率(乘法,numpy中的點函數)。據我所知,所有的值範圍從0到1,我不知道我是否可以在32/64bit上強制numpy編碼值(節省內存或享受更高的精度),但是上限固定爲1?python&numpy:強制矩陣包含已知範圍從x到y的值?

try1 = numpy.array([1.0,0.2564654646546],dtype='f16') 

可以強制dtype的範圍從x到y,每個值的內存量相同嗎?

+1

不容易,沒有。 numpy數據類型是底層C代碼中低級數據類型的名稱。 – katrielalex

+3

由於它們是概率,它們不應該在[0,1]的範圍內,而不是(-inf,1]?(你不應該用對數計算來保留數值穩定性嗎?) –

+0

@larsmans:對數如果經常使用點積(=>加法),那麼它就不會更好。 – smci

回答

1

據我所知,numpy數組不支持定點算法,我還沒有聽說有任何添加它的計劃。如果你有興趣玩這些東西,你可以檢查出matlab的fixed-pt toolbox,或者如果你真的喜歡數學,你可以使用整數數據類型和自己的'點'來跟蹤你自己。

雖然浮點運算的方式已經非常簡潔,但我不確定只要知道數字在[0,1]中,您就可以獲得每比特精度的堆。浮點類似於科學記數法,增加位數主要爲您提供更多的「有效位數」,而不僅僅是更大範圍的數字。

0

我想現在你可以用這個acchieve:

a = np.linspace(0, 1, number_of_points)