首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用scipy和numpy中的函数计算z分数

使用scipy和numpy中的函数计算z分数
EN

Stack Overflow用户
提问于 2017-05-25 16:29:44
回答 1查看 17.9K关注 0票数 9

我尝试在scipy中使用stats.zscore(),结果如下,这让我感到困惑。

假设我有一个数组,我用两种不同的方法计算z-score:

代码语言:javascript
运行
复制
>>> a = np.array([[1.0, 2.0], [3.0, 4.0]])
>>> a
array([[ 1.,  2.],
       [ 3.,  4.]])

第一个结果:

代码语言:javascript
运行
复制
>>> stats.zscore(a)               
array([[-1., -1.],
       [ 1.,  1.]])

第二个结果:

代码语言:javascript
运行
复制
>>> mean = np.mean(a)
>>> mean
2.5
>>> std = np.std(a)
>>> std
1.1180339887498949
>>> b = (a-mean)/std
>>> b
array([[-1.34164079, -0.4472136 ],
       [ 0.4472136 ,  1.34164079]])

上面的结果是不同的,但是如果我使用另一个数组,

代码语言:javascript
运行
复制
>>> c = np.array([ 0.7972,  0.0767,  0.4383,  0.7866,  0.8091,  0.1954, 0.6307, 0.6599,  0.1065,  0.0508])
>>> c
array([ 0.7972,  0.0767,  0.4383,  0.7866,  0.8091,  0.1954,  0.6307, 0.6599,  0.1065,  0.0508])

第一个结果:

代码语言:javascript
运行
复制
>>> stats.zscore(c)
array([ 1.12724554, -1.2469956 , -0.05542642,  1.09231569,  1.16645923, -0.8558472 ,  0.57858329,  0.67480514, -1.14879659, -1.33234306])

第二个结果:

代码语言:javascript
运行
复制
>>> mean = np.mean(c)
>>> mean
0.45511999999999986
>>> std = np.std(c)
>>> std
0.30346538451691657
>>> b = (c-mean)/std
>>> b
array([ 1.12724554, -1.2469956 , -0.05542642,  1.09231569,  1.16645923, -0.8558472 ,  0.57858329,  0.67480514, -1.14879659, -1.33234306])

因此,当我使用另一个数组时,结果变得相同。有人能帮我弄明白我到底做错了什么吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 18:20:13

由于没有人添加答案,而且似乎是正确的,所以我将在这里发布Alex Riley的答案。

尝试此操作可获得与2D数组相同的结果。

代码语言:javascript
运行
复制
from scipy import stats

stats.zscore(a, axis=None)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44175866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档