为什么相同数据的标准偏差不为零?

时间:2019-05-20 05:41:25

标签: python arrays

我正在尝试查找少量矩阵的标准偏差(逐元素)。但是我得到了一些错误的答案。因此,我尝试通过使用相同的矩阵获得零标准偏差来检查是否存在一些错误。但是这段代码返回的是一些杂散值,而不是零矩阵。我无法理解该错误的原因。有人可以帮我吗?

我试图获得相同矩阵的标准偏差。在这种情况下,我将得到一个零矩阵。我试图在程序的不同部分打印一些值。程序的第一部分工作正常。但是,在我试图找到std dev的那部分中,我得到的数字我无法理解。

from math import *
import numpy as np

for i in range(0,10):
    filename = 'W_10_10_%d' %(1); #using the same matrix
    with open(filename,'r') as f:
        l = [[float(num) for num in line.split()] for line in f];
    if (i==0):
        l1 = np.array(l);   
    else :
        l1 = l1 + np.array(l);

l1 = l1/long(10.0) #averaging the matrix

for i in range(0,10):
    filename = 'W_10_10_%d'  %(1);
    with open(filename,'r') as f:
        l = [[float(num) for num in line.split()] for line in f];
    if (i==0):
        l2 = (l1-np.array(l))**2; #here I am getting non-zero number
    else :
        l2 = l2 + (l1-np.array(l))**2;

l2 = np.sqrt(l2/long(9.0))

f = open('w_stddev_10','w+')

x, y = l2.shape

for i in range(x):
    for j in range(y):
        f.write("%e   " % l2[i][j])
    f.write("\n")

f.close()

我应该得到零矩阵作为输出,但是我得到了一些大数字。

1 个答案:

答案 0 :(得分:0)

(在评论中进行讨论)

如果问题出现在较大的数据上,而不是较小的数据,则必须是数字问题,即浮点数或类似问题。如果可以将您的所有数据保存在内存中(例如用它制作一个实际的3D数组),请这样做并在第3维上计算std