相关疑难解决方法(0)

精确,为什么Matlab和Python numpy会给出如此不同的输出?

我知道基本数据类型,浮点类型(float,double)不能完全保存一些数字.

在将一些代码从Matlab移植到Python(Numpy)时,我发现计算中存在一些显着的差异,我认为它会回到精确度.

采用以下代码,对仅具有非零值的前两个元素进行z标准化500维向量.

Matlab的:

Z = repmat(0,500,1); Z(1)=3;Z(2)=1;
Za = (Z-repmat(mean(Z),500,1)) ./ repmat(std(Z),500,1);
Za(1)
>>> 21.1694
Run Code Online (Sandbox Code Playgroud)

蟒蛇:

from numpy import zeros,mean,std
Z = zeros((500,))
Z[0] = 3
Z[1] = 1
Za = (Z - mean(Z)) / std(Z)
print Za[0]
>>> 21.1905669677
Run Code Online (Sandbox Code Playgroud)

除了格式化在Python中显示更多位数之外,还有一个巨大的差异(imho),大于0.02

Python和Matlab都使用64位数据类型(afaik).Python使用'numpy.float64'和Matlab'double'.

为什么差异如此之大?哪一个更正确?

python statistics matlab floating-point-precision

18
推荐指数
2
解决办法
3130
查看次数