Numpy元素标准偏差

时间:2014-06-03 08:21:46

标签: python numpy

假设我n二维基质M1, M2, M3, ...具有相同的尺寸。

是否有一种有效的方法来生成输出矩阵MR,其中MR中的每个元素都对应M1, M2, M3, ...

中该位置元素的标准差

该操作的一个例子如下:

       1 4 5   8 2 3   -1 8 2      4.73  3.06  1.53
stdev( 3 9 2,  2 1 0,   0 3 1 ) =  1.53  4.16  1.00
       7 1 2   8 3 1    9 5 8      1.00  2.00  3.79

澄清:结果矩阵的左上角元素计算如下:

stdev(1,8,-1) = 4.7258

而左下角的元素计算如下:

stdev(7,8,9) = 1.00

如果不是一次性使用内置运算符来实现这一点,那么还有一种有效的选择吗?

以下是测试矩阵:

a=numpy.array( [[1,4,5],[3,9,2],[7,1,2]])
b=numpy.array( [[8,2,3],[2,1,0],[8,3,1]])
c=numpy.array([[-1,8,2],[0,3,1],[9,5,8]])

2 个答案:

答案 0 :(得分:3)

numpy是你的朋友

import numpy as np
print np.std((a,b,c), axis=0, ddof=1)

提供的矩阵

array([[ 4.72581563,  3.05505046,  1.52752523],
       [ 1.52752523,  4.163332  ,  1.        ],
       [ 1.        ,  2.        ,  3.7859389 ]])

按预期

答案 1 :(得分:2)

首先将您的数据放入一个数组中:

d = np.dstack((a,b,c))

沿着thrid axies采取std:

np.std(d, 2, ddof=1)