我该怎么修改这段代码:
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是列表列表并且我想找到每行的标准偏差,它会起作用吗? 任何帮助表示赞赏
答案 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
的