每日1题 -大样本统计

 


class Solution:
    def sampleStats(self, count: List[int]) -> List[float]:
        
        # 最小值标记
        minimum_flag=0

        # 求和
        total=0

        # 次数求和
        count_len=0

        # 众数标记
        mode_count=0

        # count前缀和
        pre=[]

        for n,number_count in enumerate(count):
            number=n

            if pre:
                pre.append(number_count+pre[-1])
            else:
                pre.append(number_count)
            
            # number不存在,快速跳过
            if number_count==0:
                continue

            # number存在
            else:
                # 最小值
                if minimum_flag==0:
                    minimum=number
                    minimum_flag=1
                
                # 最大值
                maximum=number

                # 求和
                total+=number*number_count
                count_len+=number_count

                # 众数
                if number_count>mode_count:
                    mode_count=number_count
                    mode=number
                
        
        # 平均值
        mean=total/count_len

        # 中位数
        if count_len%2==1:
            median_count=int((count_len-1)/2)+1

            for n,i in enumerate(pre):
                number=n
                if median_count<=i:
                    median=number
                    break
                else:
                    continue
            
        else:
            median_count_1=int(count_len/2)
            median_count_2=int(count_len/2)+1

            median_1=None
            median_2=None

            for n,i in enumerate(pre):
                number=n

                if median_count_1<=i:
                    if not median_1:
                        median_1=number
                
                if median_count_2<=i:
                    if not median_2:
                        median_2=number
                
                if median_1!=None and median_2!=None:
                    break


            median=(median_1+median_2)/2

        return [minimum,maximum,mean,median,mode]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值