2015-08-18 55 views
1

我有一個數據集數組AAn × 2。它可以繪製在x和y軸上。 A[:,1]得到我所有的Y值ans A[:,0]得到我所有的x值。numpy獲得數據集之間的std

現在,我有一些其他類似於A的數據集陣列。這些相似陣列的X值是相同的。我如何計算數據集的標準偏差?每個X應該有一個std值。最後,我的結果std的長度應該是n

我可以用循環手動方式做到這一點,但我不知道如何使用NumPy以pythonic和簡單的方式做到這一點。

這裏有一些樣本數據:

A=[[0,2.54],[1,254.5],[2,-43]] 
B=[[0,3.34],[1,154.5],[2,-93]] 
std_Array=[std(2.54,3.54),std(254.5,154.5),std(-43,-93)] 
+1

您應該發佈一些示例數據,輸入和預期輸出。你說你的結果應該是長度n,是因爲有n個數組?這是否與A的長度相同?您是否想要每個數組的x值的std。如果你有一個數組列表,你可以使用'np.dstack'來創建一個3D數組,然後取出std。沿着適當的軸 – JoeCondron

+0

ddf = 0的np.std(a,軸= None,dtype = None,out = None,ddof = 0,keepdims = False)是總體st。 dev ...與ddof = 1,它是示例標準開發。請注意,如果您有NaN,則具有與ddof選項相似的等效np.nanstd –

回答

0

難道這還不夠Python的?

std_Array = numpy.std((A,B), axis = 0)[:,1] 
0

假設你的數組都是相同的形狀,它們在列表中。然後獲得每個的第一列的標準偏差可以做

arrays = [np.random.rand(10, 2) for _ in range(8)] 
np.dstack(arrays).std(axis=0)[0] 

這堆2-d陣列成3 d陣列的然後採取沿着第一軸的std,給人一種2×8 (數組的數量)。結果的第一行是std。開發者。在8組x值中。 如果您發佈一些示例數據,或許我們可以提供更多幫助。

0
li_arr = [np.array(x)[: , 1] for x in [A , B]] 

這將產生specifi列numpy的陣列,你要添加的結果將是

[array([ 2.54, 254.5 , -43. ]), array([ 3.34, 154.5 , -93. ])] 

然後你一疊使用column_stack

arr = np.column_stack(li_arr) 

值,這將是這個結果堆疊

array([[ 2.54, 3.34], 
     [ 254.5 , 154.5 ], 
     [ -43. , -93. ]]) 

然後最後

np.std(arr , axis = 1)