我正在尝试对包含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]
答案 0 :(得分:0)
给出一维数组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
答案 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