Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表列表中查找每个列表的标准偏差_Python_Python 2.x - Fatal编程技术网

Python 在列表列表中查找每个列表的标准偏差

Python 在列表列表中查找每个列表的标准偏差,python,python-2.x,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)/floa

如何修改此代码:

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是一个列表列表,我想找出每一行的标准偏差,那么它就可以工作了?
感谢您提供的任何帮助

不要修改代码,更容易理解列表:

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]
[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

这正是列表理解和
map
函数的作用:将一些表达式或函数(分别)应用到序列中的每个元素,并将结果放入一个新的列表中;最好编写一个没有任何无关内容的精简示例(例如,给定一个只返回列表长度的单行函数,如何更改它以返回列表中每个列表的长度)?而且绝对不要为没有问题的东西添加标记。我经常遇到这样的错误:
TypeError:不支持的操作数类型/:“generator”和“float”
关于如何修复它的任何想法?现在修复。我在返回中丢失了一个参数。当我按你的方式尝试时,我得到了一个类似的错误(
sumVar+=((I-avgVal)代表a中的I)**2类型错误:不支持**或pow()的操作数类型:'generator'和'int'
)这是因为
((I-avgVal)代表a中的I)
是你所写语句中的生成器表达式。尝试
sumVar=sum((i-avgVal)**2表示A中的i)
。是否有一种简单的方法只使用列表中的正数?
sumVar=sum((i-avgVal)**2表示A中的i,如果i>=0)