每个数组项的Numpy均值和标准差

5
我有一个由二维数组组成的列表(形状相同),希望得到所有项的平均值和偏差,以与输入相同形状的结果数组。我无法理解文档中是否可能实现此目标。我尝试使用axis和keepdims参数,但产生了不同形状的结果。
例如,我想要mean([x, x])等于x,并且std([x, x])为零,与x形状相同。
如果不重新调整数组,是否可以实现这一点?如果不能,如何通过重新调整来实现?
示例:
>> x= np.array([[1,2],[3,4]])
>>> y= np.array([[2,3],[4,5]])
>>> np.mean([x,y])
3.0

我希望您能提供 [[1.5,2.5],[3.5,4.5]]

1个回答

9

正如Divikar所指出的那样,您可以将数组列表传递给np.mean并指定axis=0,以便对列表中每个数组的相应值进行平均:

In [13]: np.mean([x,y], axis=0)
Out[13]: 
array([[ 1.5,  2.5],
       [ 3.5,  4.5]])

这适用于任意长度的列表。对于仅包含两个数组的情况,(x+y)/2.0 更快
In [20]: %timeit (x+y)/2.0
100000 loops, best of 3: 1.96 µs per loop

In [21]: %timeit np.mean([x,y], axis=0)
10000 loops, best of 3: 21.6 µs per loop

或者只需使用np.mean([x,y],axis=0)np.std([x,y],axis=0)也可以。 - Divakar
啊,是的,因为np.asarray被调用了。感谢您的更正,@Divakar。 - unutbu
我几乎确定我已经尝试过axis=0,但我想不是。谢谢!这些列表的长度确实是任意的,所以我会选择第一个(似乎我的numpy版本上没有stack函数)。 - Gnurfos

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