В этой статье мы рассмотрим различные способы найти среднее значение списка в списке Python. Среднее значение – это значение, которое представляет весь набор элементов данных или элементов.
Формула: Среднее значение = сумма чисел / общее количество.
Содержание
- Методы поиска среднего значения списка
- Функция mean()
- Использование функции sum()
- 3. Использование reduce() и lambda()
- Функция operator.add() для поиска среднего значения списка
- Метод NumPy average() для вычисления среднего значения списка
Методы поиска среднего значения списка
Для вычисления среднего значения списка в Python можно использовать любой из следующих методов:
- Функция mean();
- Встроенный метод sum();
- Методы lambda() и reduce();
- Метод operator.add().
Функция mean()
Python 3 имеет модуль статистики, который содержит встроенную функцию для вычисления среднего числа. Функция statistics.mean() используется для вычисления среднего входного значения или набора данных.
Функция mean() принимает список, кортеж или набор данных, содержащий числовые значения, в качестве параметра и возвращает среднее значение элементов данных.
Синтаксис:
mean(data-set/input-values)
Пример:
from statistics import mean inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] list_avg = mean(inp_lst) print("Average value of the list:n") print(list_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(list_avg,3))
В приведенном выше фрагменте кода мы использовали метод statistics.round() для округления выходного среднего до определенного десятичного значения.
Синтаксис:
statistics.round(value, precision value)
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Использование функции sum()
Функция statistics.sum() также может использоваться для поиска среднего значения данных в списке Python.
Функция statistics.len() используется для вычисления длины списка, т.е. количества элементов данных, присутствующих в списке.
Синтаксис:
len(input-list)
Кроме того, функция statistics.sum() используется для вычисления суммы всех элементов данных в списке.
Синтаксис:
sum(input-list)
Примечание: среднее значение = (сумма) / (количество).
Пример:
from statistics import mean inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] sum_lst = sum(inp_lst) lst_avg = sum_lst/len(inp_lst) print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
3. Использование reduce() и lambda()
Мы можем использовать функцию reduce() вместе с функцией lambda().
Функция reduce() в основном используется для применения определенной (входной) функции к набору элементов, переданных в функцию.
Синтаксис:
reduce(function,input-list/sequence)
- Первоначально функция reduce() применяет переданную функцию к первым двум последовательным элементам и возвращает результат.
- Далее мы применяем ту же функцию к результату, полученному на предыдущем шаге, и к элементу, следующему за вторым элементом.
- Этот процесс продолжается, пока не дойдет до конца списка.
- Наконец, результат возвращается на терминал или экран в качестве вывода.
Функция lambda() используется для создания и формирования анонимных функций, то есть функции без имени или подписи.
Синтаксис:
lambda arguments:function
Пример:
from functools import reduce inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_len= len(inp_lst) lst_avg = reduce(lambda x, y: x + y, inp_lst) /lst_len print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Функция operator.add() для поиска среднего значения списка
Модуль operator.add() содержит различные функции для эффективного выполнения основных вычислений и операций.
Функцию operator.add() можно использовать для вычисления суммы всех значений данных, присутствующих в списке, с помощью функции reduce().
Синтаксис:
operator.add(value1, value2)
Примечание: среднее значение = (сумма) / (длина или количество элементов)
Пример:
from functools import reduce import operator inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_len = len(inp_lst) lst_avg = reduce(operator.add, inp_lst) /lst_len print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Метод NumPy average() для вычисления среднего значения списка
Модуль NumPy имеет встроенную функцию для вычисления среднего значения элементов данных, присутствующих в наборе данных или списке.
Метод numpy.average() используется для вычисления среднего значения входного списка.
Пример:
import numpy inp_lst = [12, 45, 78, 36, 45, 237.11, -1, 88] lst_avg = numpy.average(inp_lst) print("Average value of the list:n") print(lst_avg) print("Average value of the list with precision upto 3 decimal value:n") print(round(lst_avg,3))
Вывод:
Average value of the list: 67.51375 Average value of the list with precision upto 3 decimal value: 67.514
Given 3 numbers, I need to find which number lies between the two others.
ie,given 3,5,2
I need 3 to be returned.
I tried to implement this by going thru all three and using if else conditions to check if each is between the other two.But this seems a naive way to do this.Is there a better way?
asked Apr 2, 2012 at 15:55
2
Put them in a list, sort them, pick the middle one.
answered Apr 2, 2012 at 15:56
Sven MarnachSven Marnach
567k117 gold badges934 silver badges834 bronze badges
5
>>> x = [1,3,2]
>>> sorted(x)[len(x) // 2]
2
answered Apr 2, 2012 at 16:01
jamylakjamylak
128k30 gold badges230 silver badges230 bronze badges
The fastest obvious way for three numbers
def mean3(a, b, c):
if a <= b <= c or c <= b <= a:
return b
elif b <= a <= c or c <= a <= b:
return a
else:
return c
answered Apr 2, 2012 at 16:45
Zaur NasibovZaur Nasibov
22.1k12 gold badges56 silver badges82 bronze badges
1
What you want is the median. You can use this code below for any number of numbers:
import numpy
numbers = [3,5,2]
median = numpy.median(numbers)
for a custom solution you can visit this page.
answered Apr 2, 2012 at 16:08
Thanasis PetsasThanasis Petsas
4,3485 gold badges30 silver badges57 bronze badges
2
You could do
numbers = [3, 5, 2]
sorted(numbers)[1]
answered Apr 2, 2012 at 15:57
David RobinsonDavid Robinson
76.8k16 gold badges165 silver badges184 bronze badges
1
This is a O(n) implementation of the median using cumulative distributions. It’s faster than sorting, because sorting is O(ln(n)*n).
def median(data):
frequency_distribution = {i:0 for i in data}
for x in data:
frequency_distribution[x] =+ 1
cumulative_sum = 0
for i in data:
cumulative_sum += frequency_distribution[i]
if (cumulative_sum > int(len(data)*0.5)):
return i
answered Apr 2, 2012 at 16:15
luke14freeluke14free
2,5291 gold badge17 silver badges25 bronze badges
2
Check this (Suppose list already sorted):
def median(list):
ceil_half_len = math.ceil((len(list)-1)/2) # get the ceil middle element's index
floor_half_len = math.floor((len(list)-1)/2) # get the floor middle element 's index'
return (list[ceil_half_len] + list[floor_half_len]) / 2
answered Oct 29, 2013 at 3:29
1
If it’s just for 3 numbers. First find the max and the min numbers in list. Remove them, the remainder of list is the medium. If you don’t want to use the “if-else” or “sorted()” that is.
def mid(a,b,c):
num = [a,b,c]
small, big = min(num), max(num)
num.remove(small)
num.remove(big)
return num[0] # return the remainder
answered Apr 25, 2020 at 7:38
samvsamv
212 silver badges4 bronze badges
Here is my attempt using a more pythonic version
def median(a):
sorted_a = sorted(a)
if len(a) % 2 == 0:
median = sum(sorted_a[(len(a)//2)-1:(len(a)//2)+1])/2.
else:
median = sorted_a[(len(a)-1)//2]
>>> x = [64630, 11735, 14216, 99233, 14470, 4978, 73429, 38120, 51135, 67060]
>>> median(x)
>>> 44627.5
>>> y = [1, 2, 3]
>>> median(y)
>>> 2
answered Jan 12, 2017 at 7:28
MichaelMichael
2,4161 gold badge35 silver badges57 bronze badges
If you wish to avoid sorting, you can do:
def find_median(x):
return sum(x) - max(x) - min(x)
answered Mar 30, 2017 at 19:11
Cabbage soupCabbage soup
1,3241 gold badge18 silver badges26 bronze badges
EDIT:
I added two other ways to get the average of a list (which are relevant only for Python 3.8+). Here is the comparison that I made:
import timeit
import statistics
import numpy as np
from functools import reduce
import pandas as pd
import math
LIST_RANGE = 10
NUMBERS_OF_TIMES_TO_TEST = 10000
l = list(range(LIST_RANGE))
def mean1():
return statistics.mean(l)
def mean2():
return sum(l) / len(l)
def mean3():
return np.mean(l)
def mean4():
return np.array(l).mean()
def mean5():
return reduce(lambda x, y: x + y / float(len(l)), l, 0)
def mean6():
return pd.Series(l).mean()
def mean7():
return statistics.fmean(l)
def mean8():
return math.fsum(l) / len(l)
for func in [mean1, mean2, mean3, mean4, mean5, mean6, mean7, mean8 ]:
print(f"{func.__name__} took: ", timeit.timeit(stmt=func, number=NUMBERS_OF_TIMES_TO_TEST))
These are the results I got:
mean1 took: 0.09751558300000002
mean2 took: 0.005496791999999973
mean3 took: 0.07754683299999998
mean4 took: 0.055743208000000044
mean5 took: 0.018134082999999968
mean6 took: 0.6663848750000001
mean7 took: 0.004305374999999945
mean8 took: 0.003203333000000086
Interesting! looks like math.fsum(l) / len(l)
is the fastest way, then statistics.fmean(l)
, and only then sum(l) / len(l)
. Nice!
Thank you @Asclepius for showing me these two other ways!
OLD ANSWER:
In terms of efficiency and speed, these are the results that I got testing the other answers:
# test mean caculation
import timeit
import statistics
import numpy as np
from functools import reduce
import pandas as pd
LIST_RANGE = 10
NUMBERS_OF_TIMES_TO_TEST = 10000
l = list(range(LIST_RANGE))
def mean1():
return statistics.mean(l)
def mean2():
return sum(l) / len(l)
def mean3():
return np.mean(l)
def mean4():
return np.array(l).mean()
def mean5():
return reduce(lambda x, y: x + y / float(len(l)), l, 0)
def mean6():
return pd.Series(l).mean()
for func in [mean1, mean2, mean3, mean4, mean5, mean6]:
print(f"{func.__name__} took: ", timeit.timeit(stmt=func, number=NUMBERS_OF_TIMES_TO_TEST))
and the results:
mean1 took: 0.17030245899968577
mean2 took: 0.002183011999932205
mean3 took: 0.09744236000005913
mean4 took: 0.07070840100004716
mean5 took: 0.022754742999950395
mean6 took: 1.6689282460001778
so clearly the winner is:
sum(l) / len(l)
Время чтения 4 мин.
Mean() — это встроенная статистическая функция Python, используемая для вычисления среднего значения чисел списков. Он принимает данные в качестве аргумента и возвращает среднее значение данных.
Содержание
- Среднее значение списка в Python
- Способ 1: функция Python Statistics.mean()
- Способ 2: использование функций sum() и len()
- Способ 3: использование функции numpy.mean()
- Метод 4: цикл For для вычисления среднего значения
- Дополнительные примеры
- Вычисление среднего значения кортежа в Python
- Нахождение среднего значения словаря в Python
- Кортеж отрицательного набора целых чисел
- Список отрицательного набора целых чисел
- Как вычислить среднее значение списка дробей
- TypeError в Python
Чтобы вычислить среднее значение списка в Python:
- Используйте функцию Statistics.mean().
- Используйте функции sum() и len().
- Функцию numpy.mean().
- Цикл for.
Формула для расчета среднего достигается путем вычисления суммы чисел в списке, поделенной на количество чисел в списке.
import statistics spiList = [5.55, 5.72, 7.3, 7.75, 8.4, 9, 8.8, 8.2] print(statistics.mean(spiList)) |
Выход
В приведенном выше примере у нас есть восемь точек данных, и мы используем функцию Statistics.mean() для вычисления среднего значения списка.
Способ 1: функция Python Statistics.mean()
Чтобы использовать метод mean() в Python, импортируйте модуль статистики, а затем мы можем использовать функцию mean для возврата среднего значения данного списка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import statistics data = [11, 21, 11, 19, 46, 21, 19, 29, 21, 18, 3, 11, 11] x = statistics.mean(data) print(x) y = statistics.median(data) print(y) z = statistics.mode(data) print(z) a = statistics.stdev(data) print(a) b = statistics.variance(data) print(b) |
Выход
18.53846153846154 19 11 10.611435534486562 112.6025641025641 |
В приведенном выше примере кода мы использовали функции среднего значения, режима, медианы, дисперсии и стандартного отклонения.
Способ 2: использование функций sum() и len()
Python sum() — это встроенная функция, которая возвращает сумму всех элементов списка. Точно так же функция len() возвращает количество элементов в списке. Мы объединим эти две встроенные функции, чтобы получить среднее значение списка.
def averageOfList(numOfList): avg = sum(numOfList) / len(numOfList) return avg print(“The average of List is”, round(averageOfList([19, 21, 46, 11, 18]), 2)) |
Выход
The average of List is 23.0 |
Способ 3: использование функции numpy.mean()
Функция NumPy.mean() возвращает среднее значение элементов массива. Среднее значение берется по сглаженному массиву по умолчанию; в противном случае по указанной оси.
Библиотека Numpy — это широко используемая библиотека для работы с большими многомерными массивами. Он также имеет обширные математические функции для массивов для выполнения различных задач.
Важно отметить, что функция mean() даст нам среднее значение для предоставленного списка.
from numpy import mean number_list = [19, 21, 46, 11, 18] avg = mean(number_list) print(“The average of List is “, round(avg, 2)) |
Выход
The average of List is 23.0 |
Метод 4: цикл For для вычисления среднего значения
В следующем примере кода мы инициализировали переменную sumOfNumbers значением 0 и использовали цикл for.
Цикл for будет перебирать элементы, присутствующие в списке, и каждое число добавляется и сохраняется внутри переменной sumOfNumbers.
Среднее значение рассчитывается с использованием суммы sumOfNumbers, деленной на количество чисел в списке с помощью встроенной функции len().
def averageOfList(num): sumOfNumbers = 0 for t in num: sumOfNumbers = sumOfNumbers + t avg = sumOfNumbers / len(num) return avg print(“The average of List is”, averageOfList([19, 21, 46, 11, 18])) |
Выход
The average of List is 23.0 |
В приведенном выше коде мы используем цикл for для суммирования всех элементов, а затем делим эту сумму на несколько элементов, чтобы получить среднее значение в Python.
Дополнительные примеры
Мы импортируем модуль статистики, а затем вызовем функцию mean(), чтобы получить среднее значение данных.
import statistics data = [21, 19, 18, 46, 30] print(statistics.mean(data)) |
Выход
Вычисление среднего значения кортежа в Python
Чтобы найти среднее значение кортежа в Python, используйте метод Statistics.mean(), который аналогичен нахождению среднего значения списка. Мы должны передать кортеж в качестве параметра.
import statistics tupleA =(1, 9, 2, 1, 1, 8) print(statistics.mean(tupleA)) |
Выход
Это будет работать так же, как список. Он просто возвращает среднее значение чисел внутри кортежа.
Нахождение среднего значения словаря в Python
Чтобы вычислить среднее значение словаря, мы можем использовать метод Statistics.mean(). В словаре функция подсчитывает только ключи как числа и возвращает среднее значение этого словаря на основе ключей словаря.
import statistics dictA = {1: 19, 2:21, 3:18, 4:46, 5:30} print(statistics.mean(dictA)) |
Выход
Кортеж отрицательного набора целых чисел
Мы используем statistics, чтобы найти среднее значение кортежа отрицательного метода set.mean(). Нам нужно передать отрицательный кортеж в качестве параметра функции mean(), а взамен мы получим вывод.
import statistics data =(–11, –21, –18, –19, –46) print(statistics.mean(data)) |
Выход
Возьмем пример кортежа из смешанного диапазона чисел.
import statistics data =(11, 21, –18, 19, –46) print(statistics.mean(data)) |
Выход
Список отрицательного набора целых чисел
Чтобы вычислить среднее значение списка в Python, используйте метод Statistics.mean(). Мы передадим список отрицательного множества методу mean(), и на выходе мы рассчитаем среднее значение.
import statistics data = [–11, –21, –18, –19, –46] print(statistics.mean(data)) |
См. следующий вывод.
Возьмем пример списка смешанного диапазона чисел.
import statistics data = [11, 21, –18, –19, 46] print(statistics.mean(data)) |
Выход
Как вычислить среднее значение списка дробей
Чтобы вычислить среднее значение списка дробей, используйте метод Statistics.mean(). Сначала нам нужно импортировать модуль статистики и дробей, а затем создать дробь чисел, и на выходе мы получим средние значения.
import statistics from fractions import Fraction as fr data = [fr(1, 2), fr(44, 12), fr(10, 3), fr(2, 3)] print(statistics.mean(data)) |
Выход
TypeError в Python
Давайте возьмем строковые ключи в словаре Python и получим среднее значение строковых значений. Выйдет ошибка, потому что мы не можем найти среднее значение строки.
import statistics data = {“a”: 11, “b”: 21, “c”: 19, “d”: 29, “e”: 18, “f”: 46} print(statistics.mean(data)) |
Выход
TypeError: can‘t convert type ‘str‘ to numerator/denominator |
Для обработки любых данных в Python приходится выполнять множество математических вычислений. В этой статье рассмотрим различные способы вычисления среднего значения заданных чисел.
Как рассчитать среднее значение заданных чисел
Среднее значение заданных чисел – это сумма всех чисел, делёная на общее количество чисел.
Например, если нам даны числа 1, 2, 4, 5, 6, 7, 8, 10, и 12, то сумма всех заданных чисел равна 55, а их общее количество равно 9. Таким образом, среднее значение всех чисел будет равно 55/9, т.е. 6,111 .
Вычисляем среднее значение, используя цикл for
Если нам дан список чисел, мы можем вычислить среднее значение с помощью цикла for. Сначала объявим переменную sumofNums и переменную count и дадим им значение 0. Затем пройдемся по каждому элементу списка. Будем добавлять каждый элемент в переменную sumofNums. В это время будем увеличивать переменную count на 1. После обхода всего списка у нас будет сумма всех элементов списка в переменной sumofNums и общее количество элементов в переменной count. Теперь можно разделить сумму чисел на количество, чтобы получить среднее значение элементов списка:
numbers = [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
sumOfNums = 0
count = 0
for number in numbers:
sumOfNums += number
count += 1
average = sumOfNums / count
print("The list of numbers is:", numbers)
print("The average of all the numbers is:", average)
Вывод:
The list of numbers is: [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
The average of all the numbers is: 19.53846153846154
Рассчитываем среднее значение с помощью встроенных функций
Вместо цикла for можно использовать встроенные функции.
Можно вычислить сумму всех элементов списка с помощью метода sum(), а затем мы можем вычислить общее количество элементов в списке с помощью метода len(). Таким образом, у нас будет сумма чисел и общее количество чисел, с помощью которых мы сможем рассчитать среднее значение:
numbers = [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
sumOfNums = sum(numbers)
count = len(numbers)
average = sumOfNums / count
print("The list of numbers is:", numbers)
print("The average of all the numbers is:", average)
Вывод:
The list of numbers is: [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
The average of all the numbers is: 19.53846153846154
Также можно использовать метод mean() модуля статистики для прямого вычисления среднего значения элементов списка. Мы передадим данный список чисел в качестве входных данных методу mean(), и он вернёт среднее значение чисел:
import statistics
numbers = [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
average = statistics.mean(numbers)
print("The list of numbers is:", numbers)
print("The average of all the numbers is:", average)
Вывод:
The list of numbers is: [1, 2, 34, 56, 7, 23, 23, 12, 1, 2, 3, 34, 56]
The average of all the numbers is: 19.53846153846154
Заключение
В этой статье мы обсудили различные способы вычисления среднего значения заданных чисел в Python.
Просмотры: 6 367