找到列表列表中每个列表的标准偏差

时间:2013-07-17 18:28:46

标签: python python-2.x

我该怎么修改这段代码:

def SD(numList):
    cntN=len(numList)
    sumN=0
    for i in numList:
        sumN+=i
    avgVal=float(sumN)/float(cntN)
    sumVar=0.0
    for i in range(cntN):
        sumVar+=float((numList[i]-avgVal)**2)
    return ((float(sumVar)/float((cntN-1)))**0.5)

如果numList是列表列表并且我想找到每行的标准偏差,它会起作用吗? 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:3)

def SD(numLists):
    def singleSD(numList):
      cntN=len(numList)
      sumN=0
      for i in numList:
          sumN+=i
      avgVal=float(sumN)/float(cntN)
      sumVar=0.0
      for i in range(cntN):
          sumVar+=float((numList[i]-avgVal)**2)
      return ((float(sumVar)/float((cntN-1)))**0.5)
    return [singleSD(l) for l in numLists]

答案 1 :(得分:2)

不是修改代码,而是更容易进行列表理解:

[SD(nl) for nl in numLists]

此外,您可以使用列表推导简化SD功能:

def SD(numList):
    cntN = len(numList)
    avgVal = float(sum(numList))/cntN
    return (sum((i-avgVal)**2 for i in numList)/(cntN-1))**0.5

你还有很多冗余Float