2011-07-18 17 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)