我试图找到列表的中位数。我已经尝试了两种方式,它也没有用(我已经导入了我需要的,列表就在那里)selfies是列表的名称
def median():
return numpy.median(numpy.array(selfies))
这是错误
ret = umr_sum(arr,axis,dtype,out,keepdims)
TypeError:无法使用灵活类型执行reduce
,另一种方式是
def median():
med = statistics.median(selfies)
return med
错误是
return(data [i - 1] + data [i])/ 2
TypeError:/:'str'和'int'
的不支持的操作数类型
提前谢谢
答案 0 :(得分:2)
Hello User9123,
此模块提供计算mathematical statistics of numeric (Real-valued) data
。
注意除非另有明确说明,否则这些函数支持int,float,decimal.Decimal和fractions.Fraction。目前不支持其他类型的行为(无论是否在数字塔中)。混合类型也是未定义的和依赖于实现的。如果您的输入数据由混合类型组成,您可以使用map()来确保结果一致,例如map(float,input_data)。
当你对字符串使用这个函数,所以它不能正常工作一段时间,所以我建议你使用自定义函数。我在下面的代码中给出了解决方案。
<强> statistics.median(数据)强>
使用常见的“中间两个均值”方法返回数值数据的中位数(中间值)。如果数据为空,则引发StatisticsError。数据可以是序列或迭代器。
中位数是对中心位置的有力衡量指标,并且受数据中异常值的影响较小。当数据点的数量为奇数时,返回中间数据点:
如果您将此函数用于数值,请尝试以下代码,
def getMedian(numericValues):
theValues = sorted(numericValues)
if len(theValues) % 2 == 1:
return theValues[(len(theValues)+1)/2-1]
else:
lower = theValues[len(theValues)/2-1]
upper = theValues[len(theValues)/2]
return (float(lower + upper)) / 2
print getMedian([0,1,2,3,4,5]) # output = 2.5
如果您使用字符串的中值函数,请尝试以下代码,
def medianFind(mystring):
return mystring[(len(mystring)-1)/2] #len returns the length of the string
print medianFind("vmr") #prints m
我希望我的回答很有帮助 如果有任何疑问请评论。
答案 1 :(得分:-1)
使用.sort()或.sorted()根据您的需要对列表进行排序, 然后检索列表[math.floor(len(list)/ 2)]。
如果您不需要对其进行排序并只想要中间值,请使用
list[math.floor(len(list)/2)].