Расчет по списку массивов - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь выполнить некоторые вычисления (среднее, сумма и т. Д.) В списке, содержащем массивы. Например:

список = [массив ([2, 3, 4]), массив ([4, 4, 4]), массив ([6, 5, 4])]]

Как можно получить среднее (например)? В списке типа [4,4,4] или в массиве типа array([4,4,4])?

Заранее спасибо за помощь!


РЕДАКТИРОВАТЬ: Извините, я не объяснил должным образом, что я собирался сделать: я хотел бы получить среднее значение i-го индекса массивов. Например, для индекса 0:

(2 + 4 + 6) / 3 = 4

Я не хочу этого:

(2 + 3 + 4) / 3 = 3

Следовательно, конечный результат будет

[4,4,4] / а не [3,4,5]

Ответы [ 4 ]

0 голосов
/ 08 марта 2019

Если бы 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
0 голосов
/ 08 марта 2019

Вы можете использовать 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]

Примечание: не называйте вашу переменную как list, поскольку она затеняет встроенные элементы

0 голосов
/ 08 марта 2019

Вы можете использовать цикл for и перебирать элементы вашего массива, если ваш список не слишком большой:

mean = []
for i in range(len(list)):
   mean.append(np.mean(list[i]))
0 голосов
/ 08 марта 2019

При наличии 1d массива 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...