python - R 和 Python 的输出值不同?

标签 python r debugging numpy statistics

也许我做错了什么z-normalizing我的阵列。有人可以看看这个并建议发生了什么吗?

在 R 中:

> data <- c(2.02, 2.33, 2.99, 6.85, 9.20, 8.80, 7.50, 6.00, 5.85, 3.85, 4.85, 3.85, 2.22, 1.45, 1.34)
> data.mean <- mean(data)
> data.sd <- sqrt(var(data))
> data.norm <- (data - data.mean) / data.sd
> print(data.norm)
 [1] -0.9796808 -0.8622706 -0.6123005  0.8496459  1.7396910  1.5881940  1.0958286  0.5277147  0.4709033 -0.2865819
[11]  0.0921607 -0.2865819 -0.9039323 -1.1955641 -1.2372258

在 Python 中使用 numpy:

>>> import string
>>> import numpy as np
>>> from scipy.stats import norm
>>> data = np.array([np.array([2.02, 2.33, 2.99, 6.85, 9.20, 8.80, 7.50, 6.00, 5.85, 3.85, 4.85, 3.85, 2.22, 1.45, 1.34])])
>>> data -= np.split(np.mean(data, axis=1), data.shape[0])
>>> data *= np.split(1.0/data.std(axis=1), data.shape[0])
>>> print data

[[-1.01406602 -0.89253491 -0.63379126  0.87946705  1.80075126  1.64393692
   1.13429034  0.54623659  0.48743122 -0.29664045  0.09539539 -0.29664045
  -0.93565885 -1.23752644 -1.28065039]]

我是否错误地使用了 numpy

最佳答案

您获得不同结果的原因与标准偏差/方差的计算方式有关。 R 使用分母 N-1 计算,而 numpy 使用分母 N 计算。您可以通过使用 data.std(ddof=1) 获得等于 R 结果的 numpy 结果,这告诉 numpy 在计算时使用 N-1 作为分母方差。

关于python - R 和 Python 的输出值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236951/

相关文章:

python - 如何从图像采集卡中抓取帧?

python - 许多模块都需要连接到 Azure SQL DB - 如何连接?

r - 使用多图 (ggplot2) 和 grid.arrange (gridExtra) 的错误

scala - 如何在 IntelliJ 13 中调试 Scala SBT 项目?

excel - 使用 Select Case 语句的公共(public)函数会输出 #VALUE!错误

python - 使用循环从列表创建数据框

python - Ttk 主题设置

r - 将结果写入foreach循环R内的文件

r - 如何删除 R 中保存的 .rda 对象中的命名空间引用?

c# - 错误处理超过10的重试计数