NumPy: вычислить средневзвешенное значение по указанной оси заданного плоского массива.
Статистика NumPy: упражнение-12 с решением
Напишите программу Python NumPy, чтобы вычислить средневзвешенное значение по указанной оси заданного плоского массива.
Взвешенное среднее арифметическое похоже на обычное среднее арифметическое (наиболее распространенный тип среднего), за исключением того, что вместо каждой из точек данных, вносящих одинаковый вклад в конечное среднее, некоторые точки данных вносят больший вклад, чем другие. Понятие взвешенного среднего значения играет роль в описательной статистике, а также встречается в более общей форме в некоторых других областях математики.
Основной пример
Учитывая два школьных класса, один с 20 учениками и один с 30 учениками, оценки в каждом классе на тесте были:
Утренний урок = 62, 67, 71, 74, 76, 77, 78, 79, 79, 80, 80, 81, 81, 82, 83, 84, 86, 89, 93, 98
Дневной класс = 81, 82, 83, 84, 85, 86, 87, 87, 88, 88, 89, 89, 89, 90, 90, 90, 90, 91, 91, 91, 92, 92, 93, 93 , 94, 95, 96, 97, 98, 99
Прямое среднее значение для утреннего класса составляет 80, а прямое среднее для дневного класса - 90. Прямое среднее для 80 и 90 - 85, среднее значение для двух классов. Однако это не учитывает разницу в количестве учащихся в каждом классе (20 против 30); следовательно, значение 85 не отражает среднюю оценку ученика (независимо от класса). Средняя оценка ученика может быть получена путем усреднения всех оценок, без учета классов (сложите все оценки и разделите на общее количество учащихся):
Или это может быть достигнуто путем взвешивания средних значений по количеству учащихся в каждом классе (с использованием средневзвешенного значения средних по классу):
Таким образом, взвешенное среднее позволяет найти среднюю оценку ученика в случае, когда доступны только средние значения по классу и количество учеников в каждом классе.
Пример решения : -
Код Python:
import numpy as np
a = np.arange(9).reshape((3,3))
print("Original flattened array:")
print(a)
print("Weighted average along the specified axis of the above flattened array:")
print(np.average(a, axis=1, weights=[1./4, 2./4, 2./4]))
Пример вывода:
Оригинальный сплющенный массив: [[0 1 2] [3 4 5] [6 7 8]] Средневзвешенное значение по указанной оси вышеуказанного сплющенного массива: [1.2 4.2 7.2]
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Написать программу NumPy для тестирования поэлементно данного массива на конечность (не бесконечность или не число), положительную или отрицательную бесконечность, для NaN, для NaT (не время), для отрицательной бесконечности, для положительной бесконечности ,
Далее: Напишите программу на Python для подсчета количества вхождений каждого значения в данный массив неотрицательных целых чисел.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования