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("不需要淘汰图片")