Проблема разработки: Как рассчитать средневзвешенное среднее значение элементов в Numpy Array?
Определение средневзвешенное Средство: Каждый элемент массива имеет ассоциированный вес. Средневзвешенная средняя сумма всех элементов массива, надлежащим образом взвешенным, разделенным на сумму всех весов.
Вот проблема с примерами:
Быстрое решение: Прежде чем мы подробно обсудим решение, вот решение, которое решает эту точную проблему:
import numpy as np array = np.array([[1, 0, 2], [1, 1, 1]]) weights = np.array([[2, 1, 1], [1, 1, 2]]) print(np.average(array, weights=weights)) # 1.0
Хотите узнать, как это работает – и как вы можете в среднем вдоль оси? Давайте погрузиться глубже в проблему рядом!
Средневзвешенное средневзвенно с функцией np.average () numpy
Numpy’s np.average (arr)
Функция вычисляет среднее значение всех числовых значений в небольшом массиве. При использовании только с одним аргументом массива оно вычисляет численное среднее значение всех значений в массиве, независимо от размеры массива. Например, выражение np.average ([[1,2], [2,3]])
Результаты в среднем значении (1 + 2 + 2 + 3)/4.0
Отказ
Тем не менее, что, если вы хотите рассчитать средневзвешенное среднее небольшой массива? Другими словами, вы хотите перевешивать t Некоторые значения массива и underweight другие.
Вы можете легко сделать это с Numpy’s средний Функция, передавая аргумент весов на Numpy средний функция.
import numpy as np a = [-1, 1, 2, 2] print(np.average(a)) # 1.0 print(np.average(a, weights = [1, 1, 1, 5])) # 1.5
В первом примере мы просто усреднены по всем значениям массива: (-1 + 1 + 2 + 2)/4.0
Отказ Однако во втором примере мы избыточный вес последнего элемента 2 массива – он теперь несет в пять раз массу других элементов, приводящих к следующим вычислениям: (-1 + 1 + 2 + (2 + 2 + 2 + 2 + 2))/8.5
Отказ
Обнеменное средневзвешенное видео
Омпящий средний синтаксис
Давайте исследуем разные параметры, которые мы можем перейти к np.average (...)
Отказ
- Numpy Array который может быть многомерным.
- (Необязательно) Ось вдоль которого вы хотите среднее. Если вы не укажете аргумент, усреднение выполняется по всему массиву.
- (Необязательно) Вес каждого столбца указанной оси. Если вы не укажете аргумент, веса предполагаются однородными.
- (Необязательно) Возвращаемое значение функции. Только если вы устанавливаете это значение TRUE, вы получите кортеж (средний, весит/sum) в результате. Это может помочь вам нормализовать вывод. В большинстве случаев вы можете пропустить этот аргумент.
average(a, axis=None, weights=None, returned=False)
a | Нет или INT или кортеж ints: ось вдоль которой в среднем массив | Ассортимент массива: массив весов, связанных с значениями в массиве A. Это позволяет настроить вес в среднем каждом элементе в | Boolean: Если false, возвращает среднее значение. Если true, возвращает кортеж (среднего, сумма_of_ovest), чтобы вы могли легко нормализовать средневзвешенные средневзвешевые. | Массив: Array содержит данные, которые необходимо усреднить. Может быть многомерным, и это не должно быть небольшой массив, но обычно это |
Осуждаемое средневзвешенное среднее вдоль оси (головоломка)
Вот пример, как в среднем вдоль столбцов 2D Numpy Array с указанными весами для обоих строк.
import numpy as np # daily stock prices # [morning, midday, evening] solar_x = np.array( [[2, 3, 4], # today [2, 2, 5]]) # yesterday # midday - weighted average print(np.average(solar_x, axis=0, weights=[3/4, 1/4])[1])
Что такое выход этой головоломки? * Уровень начинающих * (решение ниже)
Вы также можете решить эту головоломку в нашем приложении обучения на основе головоломки (100% бесплатно): Проверьте свои навыки сейчас!
Объяснение головоломки
Numpy – популярная библиотека Python для науки о данных, ориентируясь на массивы, векторы и матрицы.
Эта головоломка вводит среднюю функцию из Numpy Library. Применительно к 1D Numpy Array эта функция возвращает среднее значение значений массива. При нанесении на 2D Numpy массив просто сплющает массив. Результатом является среднее значение сплющенного 1D массива.
В головоломке у нас есть матрица с двумя рядами и три колонны. Матрица дает цены на акции Solar_x
склад. Каждая строка представляет цены на один день. Первый столбец определяет утреннюю цену, вторую полденью цену, а третью вечернюю цену.
Теперь предположим, мы не хотим знать среднее значение сплющенной матрицы, но в среднем цене в полдень. Более того, мы хотим избыточный вес самую последнюю цену акций. Сегодня приходится три четверти и вчера на четверть окончательного среднего значения.
Numpy Включает это через Вес
Параметр в сочетании с Ось
параметр.
-
Вес
Параметр определяет вес для каждого значения, участвующего в среднем расчете. -
Ось
Параметр указывает направление, вдоль которого следует рассчитать среднее значение.
В 2D матрице строка указана как Ось = 0
и колонна как ось = 1
Отказ Мы хотим узнать три средних ценности, по утрам, полденью и вечером. Мы рассчитываем среднее по ряду, то есть Ось = 0
Отказ Это приводит к трем средним значениям. Теперь мы возьмем второй элемент, чтобы получить добрую дисперсию.
Куда пойти отсюда?
Хотите процветать в науке о данных? Master Numpy сначала. Вам нужно знать самые важные концепции (такие как аргумент оси), прежде чем погрузиться в машину обучения и науке о данных. Только тогда вы можете правильно понимать алгоритмы и построить вашу карьеру на прочной основе.
Чтобы помочь вам осуществить это, мы написали легко читаемое, веселое введение в Numpy Biblic. Это 100% на основе обучения на основе головоломки: вы решаете номинальные загадки NaMpy, проверьте свои навыки и улучшаются со временем. Проверьте это, это весело! 🙂.
Решение
2.75
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.