#python #list #numpy
#python #Список #numpy
Вопрос:
Я пытаюсь выполнить некоторые вычисления (среднее значение, сумма и т.д.) В списке, содержащем массивы numpy. Например:
список = [массив([2, 3, 4]), массив([4, 4, 4]), массив([6, 5, 4])]
Как можно получить среднее значение (например)? В таком списке, как [4,4,4]
или в таком массиве numpy, как array([4,4,4])
?
Заранее спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Извините, я не объяснил должным образом, что я намеревался сделать: я хотел бы получить среднее значение i-го индекса массивов. Например, для индекса 0 :
(2 4 6)/3 = 4
Я не хочу этого :
(2 3 4)/3 = 3
Следовательно, конечный результат будет
[4,4,4] / а не [3,4,5]
Комментарии:
1. Всегда ли эти массивы имеют одинаковую форму? Так что
np.array(list)
илиnp.stack(list)
создает 2d-массив?2. Да, они имеют одинаковую форму
Ответ №1:
Если L
бы это был список скаляров, то вычисление среднего значения можно было бы выполнить, используя прямое выражение:
sum(L) / len(L)
К счастью, это работает без изменений в списках массивов:
L = [np.array([2, 3, 4]), np.array([4, 4, 4]), np.array([6, 5, 4])]
sum(L) / len(L)
# array([4., 4., 4.])
В этом примере это происходит немного быстрее, чем функция numpy
np.mean
timeit(lambda: np.mean(L, axis=0))
# 13.708808058872819
timeit(lambda: sum(L) / len(L))
# 3.4780975924804807
Комментарии:
1. Спасибо! Я использовал этот метод, и он работал должным образом
Ответ №2:
Вы можете использовать цикл for и выполнять итерации по элементам вашего массива, если ваш список не слишком большой:
mean = []
for i in range(len(list)):
mean.append(np.mean(list[i]))
Ответ №3:
Учитывая одномерный массив a
, np.mean(a)
должно получиться.
Если у вас есть 2d-массив и вам нужны средства для каждого из них отдельно, укажите np.mean(a, axis=1)
.
Существуют эквивалентные функции для np.sum
и т.д.
https://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html
https://docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html
Ответ №4:
Вы можете использовать map
import numpy as np
my_list = [np.array([2, 3, 4]),np.array([4, 4, 4]),np.array([6, 5, 4])]
np.mean(my_list,axis=0) #[4,4,4]
Примечание: Не называйте свою переменную as list
, поскольку это затенит встроенные модули