2016-05-08 9 views
0

こんにちは私はピアソンのR統計をいくつかのデータにマップしようとしています。しかし、データは配列の上にあります。私は配列を作っていますが、私が何をしても、同じ形と大きさではなく、エラーが発生します。
'複数の要素を持つ配列の真理値はあいまいです。 a.any()またはa.all() 'を使用してください同じ形状の配列の統計を見つける

ご協力いただければ幸いです!

f = netCDF4.Dataset('C:/data/Feb.nc', 
         'r') 
    # Import variables 
    v = f.variables['store_Bio'][0:28, 0:24, 0, 0:60, 0:60])/81 
    t = f.variables['temp_a'][0:28, 0:24, 0, :, :] 
    g = f.variables['skin_temp'][0:28, 0:24, :, :] 
    cc = f.variables['cloud_cover'][0:28, 0:24, 0, :, :] 


    # Mean over array to make them the same shape 
    v1 = v.mean(axis=(0, 1)) 
    t1 = t.mean(axis=(0, 1)) 
    g1 = g.mean(axis=(0, 1)) 
    cc1 = cc.mean(axis=(0, 1)) 

    # Pearson R stats 
    p11 = pearsonr(v1, t1) 
    p21 = pearsonr(v1, g1) 
    p31 = pearsonr(v1, cc1) 

答えて

0

pearsonrの入力タイプは、配列のようにする必要があります。

>>> a = np.array([[1,2],[3,4]]) 
>>> b = np.array([[1,2],[3,4]]) 
>>> pearsonr(a,b) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/dist-packages/scipy/stats/stats.py", line 2518, in pearsonr 
    r = max(min(r, 1.0), -1.0) 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

>>> pearsonr(a.ravel(),b.ravel()) 
(1.0, 0.0) 

対応する各値について、次のコードを試すことができます。あなたの入力のサイズに等しいresult配列を与えるでしょう。

>>> result = [pearsonr(x, y) for x, y in zip(a,b)] 
+0

これは、配列全体の1 rの統計情報を得る方法を確認できます。しかし、配列内の対応する値ごとにr statを取得したい。結果は、r統計を含む同じサイズの配列です。 –

+0

回答が編集されました。チェックしてください。 – qmaruf

+0

こんにちは、これは60x60x2に対して60x2の配列になります –

関連する問題