#27 import numpy as np import matplotlib.pyplot as plt import pickle import os import random from statistics import mean def функция1(выборка): """Поиск индексов min и max элементов""" if not выборка: return -1, -1 min_idx = выборка.index(min(выборка)) max_idx = выборка.index(max(выборка)) return min_idx, max_idx def функция2(выборка, N): """Разделение на группы и расчет средних""" if N <= 0: return [] средние = [] for i in range(0, len(выборка), N): группа = выборка[i:i+N] средние.append(mean(группа)) return средние def M2(): while True: имя_файла = input("Введите имя бинарного файла: ") if os.path.exists(имя_файла): break print("Файл не найден!") with open(имя_файла, 'rb') as f: выборка = pickle.load(f) min_idx, max_idx = функция1(выборка) print(f"Индекс min: {min_idx}, значение: {выборка[min_idx]}") print(f"Индекс max: {max_idx}, значение: {выборка[max_idx]}") print(f"Число элементов: {len(выборка)}") N = int(input("Введите число элементов в группе: ")) средние = функция2(выборка, N) print(f"Средние по группам: {средние}") # График plt.figure(figsize=(10, 6)) plt.plot(выборка, 'b.-', alpha=0.7) plt.title('Исходная выборка') plt.xlabel('Индекс') plt.ylabel('Значение') plt.grid(True) plt.show() return выборка, min_idx, max_idx, средние def M0(): выборка, min_idx, max_idx, средние = M2() print(f"Min: {выборка[min_idx]} (индекс {min_idx})") print(f"Max: {выборка[max_idx]} (индекс {max_idx})") print(f"Средние по группам: {средние}") def создать_тестовые_файлы(): # Первый файл данные1 = [random.gauss(0, 1) for _ in range(30)] with open('выборка1_M3_27.bin', 'wb') as f: pickle.dump(данные1, f) # Второй файл данные2 = [random.uniform(-5, 5) for _ in range(25)] with open('выборка2_M3_27.bin', 'wb') as f: pickle.dump(данные2, f) # Пример запуска if __name__ == "__main__": print("=== M3_27: Анализ выборки с группировкой ===") создать_тестовые_файлы() print("Созданы тестовые файлы: выборка1_M3_27.bin и выборка2_M3_27.bin") # Тестовый пример тест_выборка = [1, 5, 3, 8, 2, 7, 4, 6] min_idx, max_idx = функция1(тест_выборка) средние = функция2(тест_выборка, 3) print(f"Тестовая выборка: {тест_выборка}") print(f"Min индекс: {min_idx}, Max индекс: {max_idx}") print(f"Средние по группам: {средние}") M0()