计算numpy数组列表

时间:2019-03-08 14:41:49

标签: python list numpy

我正在尝试对包含numpy数组的列表进行一些计算(平均值,总和等)。 例如:

  

list = [array([2,3,4]),array([4,4,4]),array([6,5,4])]

如何获取均值(例如)? 在类似[4,4,4]的列表中还是像array([4,4,4])这样的numpy数组中?

在此先感谢您的帮助!


编辑:对不起,我没有正确解释我要做什么:我想获取数组第i个索引的平均值。例如,对于索引0:

  

(2 + 4 + 6)/ 3 = 4

我不想要这个:

  

(2 + 3 + 4)/ 3 = 3

因此最终结果将是

  

[4,4,4] /而不是[3,4,5]

4 个答案:

答案 0 :(得分:0)

给出一维数组anp.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

答案 1 :(得分:0)

您可以使用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,因为它会掩盖内置变量

答案 2 :(得分:0)

如果列表不是太大,则可以使用for循环并遍历数组的元素:

mean = []
for i in range(len(list)):
   mean.append(np.mean(list[i]))

答案 3 :(得分:0)

如果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