使用NumPy计算数组的平均值

4

给定三个列表:

A = [1, 2, 3]
B = [4, 5, 6]
C = [7, 8, 9]

如何计算以下列的平均值?

  • [1, 4, 7] 的平均值
  • [2, 5, 8] 的平均值
  • [3, 6, 9] 的平均值

不是以下行的平均值,

  • [1, 2, 3] 的平均值
  • [4, 5, 6] 的平均值
  • [7, 8, 9] 的平均值

import numpy as np
A = np.array([1,2,3])
B = np.array([4,5,6])
C = np.array([7,8,9])

我应该做些什么?

3
文档中明确写着:http://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html。 - Raiyan
这个问题不仅仅是关于计算平均值,还需要对列表进行排列。但是如何排列呢?@ Raiyan - 2964502
这个问题不应该被关闭为离题,但很可能存在一个重复的问题(因为它太基础了,或者其他人已经发布了类似作业的问题)。 - Peter Mortensen
2个回答

3
使用 numpy.ndarray.transpose
>>> np.array([
...     [1,2,3],
...     [4,5,6],
...     [7,8,9]
... ]).transpose().mean(axis=1)
array([ 4.,  5.,  6.])

或者使用numpy.transpose

>>> np.transpose([
...     [1,2,3],
...     [4,5,6],
...     [7,8,9]
... ]).mean(axis=1)
array([ 4.,  5.,  6.])

更新

如Dave Hirschfeld所评论的那样,对于axis=0的均值计算更为优秀:

>>> np.array([
...     [1,2,3],
...     [4,5,6],
...     [7,8,9]
... ]).mean(axis=0)
array([ 4.,  5.,  6.])

5
虽然在numpy中进行转置只是返回基础数据的不同"视图",并且实际上并不复制或移动任何数据,但它似乎仍然有点多余 - 只需在axis = 0上取平均即可。 - Dave Hirschfeld
@DaveHirschfeld,感谢您的评论。我根据您的评论更新了答案。很抱歉回复晚了。 - falsetru

1
import numpy as np
A = np.array([1,2,3])
B = np.array([4,5,6])
C = np.array([7,8,9])

Z = zip(A,B,C)

for z in Z :
    print np.mean(np.asarray(z))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接