You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
import numpy |
|
|
|
|
|
# 字典排序 |
|
def dict_sort(_dict, _sort_by='key', _reverse=False): |
|
if _sort_by == 'key': |
|
_result = sorted(_dict.items(), key=lambda x: x[0], reverse=_reverse) |
|
else: |
|
_result = sorted(_dict.items(), key=lambda x: x[1], reverse=_reverse) |
|
_result_dict = dict() |
|
|
|
for r in _result: |
|
_result_dict[r[0]] = r[1] |
|
return _result_dict |
|
|
|
|
|
# 计算偏差值 |
|
def get_analysis_data(_raw_dict): |
|
total = 0 |
|
for _num in _raw_dict.values(): |
|
total += _num |
|
average = total / len(_raw_dict.keys()) |
|
_delta_dict = dict() |
|
for _key, _val in _raw_dict.items(): |
|
_delta_dict[_key] = round(_raw_dict[_key] - average, 2) |
|
return _delta_dict |
|
|
|
|
|
def print_data(_data_list): |
|
new_data_list = [list(d.items()) for d in _data_list] |
|
for i in range(len(new_data_list[0])): |
|
print_str = f"" |
|
for data in new_data_list: |
|
print_str += f"{data[i][0]} [{data[i][1]}]\t" |
|
print(print_str) |
|
|
|
|
|
def new_num(min_num, max_num, random_num): |
|
num = {} |
|
|
|
d = [i for i in range(min_num, max_num + 1)] |
|
|
|
n = 100000 |
|
while n > 0: |
|
result = numpy.random.choice(d, random_num, replace=False) |
|
# print(sorted(r)) |
|
for r in result: |
|
if r in num.keys(): |
|
num[r] += 1 |
|
else: |
|
num[r] = 1 |
|
n -= 1 |
|
|
|
sorted_result = sorted(num.items(), key=lambda x: x[0]) |
|
red_result_dict = {} |
|
for item in sorted_result: |
|
red_result_dict[item[0]] = item[1] |
|
# print(red_result_dict) |
|
sorted_result_by_value = sorted(num.items(), key=lambda x: x[1], reverse=True) |
|
# print(sorted_result_by_value) |
|
return sorted_result_by_value
|
|
|