В этой статье мы рассмотрим различные способы найти среднее значение списка в списке 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
На чтение 3 мин Просмотров 1.8к. Опубликовано
Python предоставляет удобные средства для работы со списками, включая вычисление среднего арифметического элементов списка. Среднее арифметическое — это сумма элементов списка, разделенная на количество элементов в списке. В этой статье мы рассмотрим различные способы нахождения среднего арифметического элементов списка в Python.
Содержание
- Использование цикла for для вычисления среднего арифметического
- Использование функции sum() и len() для вычисления среднего арифметического
- Использование функции mean() из библиотеки statistics для вычисления среднего арифметического
Использование цикла for для вычисления среднего арифметического
Для вычисления среднего арифметического элементов списка в Python можно использовать цикл for. Сначала необходимо создать список, который будет содержать элементы, среднее арифметическое которых нужно вычислить. Далее можно использовать цикл for для итерации по элементам списка и вычисления их суммы. Затем необходимо разделить полученную сумму на количество элементов списка, чтобы получить среднее арифметическое.
Пример кода:
numbers = [1, 2, 3, 4, 5]
sum = 0
for num in numbers:
sum += num
avg = sum / len(numbers)
print("Среднее арифметическое:", avg)
В этом примере мы создали список numbers
, содержащий числа от 1 до 5, затем использовали цикл for для вычисления их суммы и разделили ее на количество элементов списка, чтобы получить среднее арифметическое. Результат выполнения программы будет следующим:
Среднее арифметическое: 3.0
Использование функции sum() и len() для вычисления среднего арифметического
Еще одним простым способом вычисления среднего арифметического элементов списка в Python является использование функций sum()
и len()
. Функция sum()
возвращает сумму всех элементов списка, а функция len()
возвращает количество элементов в списке. Делением суммы на количество элементов можно получить среднее арифметическое.
Вот как это можно реализовать в коде:
my_list = [1, 2, 3, 4, 5]
average = sum(my_list) / len(my_list)
print("Среднее арифметическое списка:", average)
В этом примере мы сначала создаем список my_list
с пятью элементами. Затем мы вычисляем среднее арифметическое элементов списка с помощью функций sum()
и len()
и сохраняем результат в переменной average
. Наконец, мы выводим среднее арифметическое на экран с помощью функции print()
. Этот способ вычисления среднего арифметического является очень простым и эффективным.
Использование функции mean() из библиотеки statistics для вычисления среднего арифметического
Для вычисления среднего арифметического элементов списка можно использовать функцию mean()
из стандартной библиотеки statistics
. Эта функция возвращает среднее арифметическое переданного ей списка чисел.
Пример использования функции mean()
:
import statistics
my_list = [1, 2, 3, 4, 5]
average = statistics.mean(my_list)
print("Среднее арифметическое:", average)
В данном примере мы создаем список my_list
и передаем его функции mean()
. Функция вычисляет среднее арифметическое элементов списка и сохраняет результат в переменной average
. Затем мы выводим полученное значение на экран.
Функция mean()
также поддерживает списки, содержащие элементы разных типов, например, целые числа и числа с плавающей запятой. Если список пуст, то функция вызовет исключение StatisticsError
. Если список содержит элементы, которые не являются числами, то будет вызвано исключение TypeError
.
def main():
total = 0.0
length = 0.0
average = 0.0
try:
#Get the name of a file
filename = input('Enter a file name: ')
#Open the file
infile = open(filename, 'r')
#Read the file's contents
contents = infile.read()
#Display the file's contents
print(contents)
#Read values from file and compute average
for line in infile:
amount = float(line)
total += amount
length = length + 1
average = total / length
#Close the file
infile.close()
#Print the amount of numbers in file and average
print('There were ', length, ' numbers in the file.' )
print(format(average, ',.2f'))
except IOError:
print('An error occurred trying to read the file.')
except ValueError:
print('Non-numeric data found in the file')
except:
print('An error has occurred')
main()
This is how the numbers in my .txt file appear:
78
65
99
88
100
96
76
I keep getting “An error has occurred” when I try to run. After I comment that out I get a divisibility error. I tried to just print out the total and length to see if they were actually computing but each is 0.0 so apparently I have some problems in getting them to accumulate correctly.
georg
210k51 gold badges308 silver badges385 bronze badges
asked Mar 26, 2012 at 4:14
1
infile.read()
consumes the file. Consider writing each line as you come across it instead.
answered Mar 26, 2012 at 4:15
infile.read()
will take the entire file, not individual portions. If you want individual portions, you’ll have to split them up (by space) and get rid of the whitespace (that being n
).
Obligatory one-liner:
contents = infile.read().strip().split()
You would then wish to iterate over the contents of contents
, as that would be the only thing worth iterating over. infile
is already exhausted, and subsequent calls to read()
will generate an empty string.
for num in contents:
amount += float(num)
# more code here
average = total / len(contents) # you can use the builtin len() method to get the length of contents instead of counting yourself
answered Mar 26, 2012 at 4:18
MakotoMakoto
104k27 gold badges188 silver badges228 bronze badges
2
I modified you code to see if I could make it work and still look as much like yours as possible. This is what I came up with:
def main():
total = 0.0
length = 0.0
average = 0.0
try:
#Get the name of a file
filename = raw_input('Enter a file name: ')
#Open the file
infile = open(filename, 'r')
#Read values from file and compute average
for line in infile:
print line.rstrip("n")
amount = float(line.rstrip("n"))
total += amount
length = length + 1
average = total / length
#Close the file
infile.close()
#Print the amount of numbers in file and average
print 'There were', length, 'numbers in the file.'
print format(average, ',.2f')
except IOError:
print 'An error occurred trying to read the file.'
except ValueError:
print 'Non-numeric data found in the file'
except:
print('An error has occurred')
main()
answered Mar 26, 2012 at 7:30
mattjeganmattjegan
2,6941 gold badge25 silver badges36 bronze badges
Время чтения 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 |
In [58]: avg = sum(list_nums)/len(list_nums)
In [59]: min([(x,abs(x-avg)) for x in list_nums], key=lambda x: x[1])[0]
Out[59]: 10
Пошаговый разбор:
In [60]: [(x,abs(x-avg)) for x in list_nums]
Out[60]:
[(5, 5.4),
(7, 3.4000000000000004),
(10, 0.40000000000000036),
(13, 2.5999999999999996),
(17, 6.6)]
далее находим кортеж с минимальной разницей:
In [61]: min([(x,abs(x-avg)) for x in list_nums], key=lambda x: x[1])
Out[61]: (10, 0.40000000000000036)
и выбираем первый элемент кортежа:
In [62]: min([(x,abs(x-avg)) for x in list_nums], key=lambda x: x[1])[0]
Out[62]: 10
вот очень элегантная версия, предложенная @jfs
min(list_nums, key=lambda num: abs(num - avg))
Альтернативный вариант:
avg = sum(list_nums)/len(list_nums)
x = list_nums[0]
for i in list_nums:
if abs(i - avg) < abs(x - avg):
x = i
print(x)