Вычисление в списке массива numpy

#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 , поскольку это затенит встроенные модули