2016-10-21 48 views
0

我有一个2维数组(相同形状)的列表,并希望得到所有项的均值和偏差,在与输入形状相同的结果数组中。我无法从文档中了解这是否可行。我所有使用axis和keepdims参数的尝试都会产生不同形状的结果。Numpy的平均值和std对数组中的每个项

我想举个例子: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]]代替。

+2

添加样例? – Divakar

回答

3

As Divikar points out,可以阵列的列表传递给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 is faster

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 
+0

或简单地''np.mean([x,y],轴= 0)''或'np.std([x,y],轴= 0)'似乎也适用。 – Divakar

+0

啊是的,因为'np.asarray'正在被调用它的输入。感谢您的更正,@Divakar。 – unutbu

+0

我几乎可以确定我已经尝试了轴= 0,但我猜不是。谢谢 !这个列表的长度确实是任意的,所以我会首先看看(而且我的numpy版本看起来并没有堆栈)。 – Gnurfos