编辑代码

# coding:utf-8
import numpy as np
from prettytable import PrettyTable
import os
from scipy.stats import kstest
import sys


def standardization(data):
    mu = np.mean(data, axis=0)
    sigma = np.std(data, axis=0)
    return (data - mu) / sigma


def judgeNorm(arr):
    _, p = kstest(arr, 'norm')

    if p > 0.05:
        print("p = %f,输入数据满足正态分布" % p)
    else:
        print("p = %f,输入数据不满足正态分布" % p)

    return


if __name__ == '__main__':

    vote_nums = []
    eliminate_photo = []
    table = PrettyTable(['图片编号', '投票数', '标准差'])

    print("现在的淘汰基准是-1.28,标准差小于-1.28被淘汰,淘汰率10%")
    vote = input("请输入每张图片的投票数(空白字符分隔):")
    vote_nums = vote.split()
    vote_list = [int(x) for x in vote_nums]

    if vote_list == []:
        raise ValueError("错误的输入")

    arr = np.asarray(vote_list, int)
    print(arr)

    if np.std(arr, axis=0) == 0.0:
        raise ValueError("标准差为0,无法判断")

    arr = standardization(arr)
    judgeNorm(arr)

    for i, num in enumerate(arr):
        table.add_row([i + 1, vote_nums[i], round(num, 2)])
        if num < -1.28:
            eliminate_photo.append(i + 1)

    print(table)

    if eliminate_photo:
        print("淘汰图片下标:", end="")
        print(eliminate_photo)
    else:
        print("不需要淘汰图片")