2017-09-10 6 views
-3

で満たされているように、アレイに私は以下のようないくつかの配列があります。再インデックスデータが欠落しているデータポイントはNaNを

[[ 0.   1.   0.73475787 0.36224658 0.08579446 -0.11767365 
    -0.09927562 0.17444341 0.47212111 1.00584593 1.69147789 1.89421069 
    1.4718292 ] 
[ 2.   1.   0.68744907 0.38420843 0.25922927 0.04719614 
    0.00841919 0.21967246 0.22183329 0.28910002 0.54637077 -0.04389335 
    -1.33445338] 
[ 3.   1.   0.77854922 0.41093192 0.0713814 -0.08194854 
    -0.07885753 0.1491798 0.56297583 1.0759857 1.57149366 1.37958867 
    0.64409152] 
[ 5.   1.   0.09182989 0.14988215 -0.1272845 0.12154707 
    -0.01194815 -0.06136953 0.18783772 0.46631855 0.78850281 0.64755372 
    0.69757144]] 

を[私は0、]私のカウントを与え、その配列に注意してください。この特定のアレイでは、カウント1、4、および6が欠落しています。他の場合には、私は2、3、5、または何が欠けていないかもしれません。

私の後半のメタアナリシスでは、配列に欠損カウントに含まれるすべてのNaNを含めることができます。

influence_incl_missing = np.ones((len(vec_conc),len(results)+1)) 
for i, conc in enumerate(vec_conc): 
    if i == influence[i,0]: 
     influence_incl_missing[i,:] = influence[i,:] 
    else: 
     influence_incl_missing[i,1:] = np.full(len(results),np.nan) 
     influence_incl_missing[i,0] = i 

これは

IndexError: index 4 is out of bounds for axis 0 with size 4 
私に明白なエラーを与える:上記の例で

、私は

[[ 0.   1.   0.73475787 0.36224658 0.08579446 -0.11767365 
    -0.09927562 0.17444341 0.47212111 1.00584593 1.69147789 1.89421069 
    1.4718292 ] 
[[ 1.   NaN   NaN   NaN  NaN   NaN 
    NaN   NaN   NaN   NaN  NaN   NaN 
    NaN ] 
[ 2.   1.   0.68744907 0.38420843 0.25922927 0.04719614 
    0.00841919 0.21967246 0.22183329 0.28910002 0.54637077 -0.04389335 
    -1.33445338] 
[ 3.   1.   0.77854922 0.41093192 0.0713814 -0.08194854 
    -0.07885753 0.1491798 0.56297583 1.0759857 1.57149366 1.37958867 
    0.64409152] 
[[ 4.   NaN   NaN   NaN  NaN   NaN 
    NaN   NaN   NaN   NaN  NaN   NaN 
    NaN ] 
[ 5.   1.   0.09182989 0.14988215 -0.1272845 0.12154707 
    -0.01194815 -0.06136953 0.18783772 0.46631855 0.78850281 0.64755372 
    0.69757144]] 
[[ 6.   NaN   NaN   NaN  NaN   NaN 
    NaN   NaN   NaN   NaN  NaN   NaN 
    NaN ] 

私の配列は、以下を試してみました再ソートするがしたいです

len(影響力)< len(vec_conc)です。

私はこれをどのようにしてPythonで行うことができますか?

多くの感謝!

+1

あなたはパンダを持っていますか? –

+0

このような文脈の「薬物干渉研究のメタアナリシス」は、「欠けているデータポイントがNaNで満たされるように、Pythonのデータを並べ替える」という質問に答えるのに役立ちますか? 質問してください。 – RedEyed

+0

いいえ、パンダがありません。それはそれの価値があるかもしれないように聞こえる? –

答えて

0

インストールパンダ:

pip install pandas 

pandasデータフレームにデータをロードし、reindex操作を適用する - それを行う必要があります。

import pandas as pd 

df = pd.DataFrame(arr) # arr is your array 

arr = df.set_index(df.columns[0])\ 
     .reindex(range(len(vec_conc)))\ 
     .reset_index().values 

arr 
array([[ 0.  , 1.  , 0.73475787, 0.36224658, 0.08579446, 
     -0.11767365, -0.09927562, 0.17444341, 0.47212111, 1.00584593, 
     1.69147789, 1.89421069, 1.4718292 ], 
     [ 1.  ,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan], 
     [ 2.  , 1.  , 0.68744907, 0.38420843, 0.25922927, 
     0.04719614, 0.00841919, 0.21967246, 0.22183329, 0.28910002, 
     0.54637077, -0.04389335, -1.33445338], 
     [ 3.  , 1.  , 0.77854922, 0.41093192, 0.0713814 , 
     -0.08194854, -0.07885753, 0.1491798 , 0.56297583, 1.0759857 , 
     1.57149366, 1.37958867, 0.64409152], 
     [ 4.  ,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan], 
     [ 5.  , 1.  , 0.09182989, 0.14988215, -0.1272845 , 
     0.12154707, -0.01194815, -0.06136953, 0.18783772, 0.46631855, 
     0.78850281, 0.64755372, 0.69757144], 
     [ 6.  ,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan,   nan,   nan, 
       nan,   nan,   nan]]) 
+0

ありがとう、私はパンダを試します –

+0

甘い、パンダは実際にアナコンダ内にインストールされ、すぐに仕事をした! –

関連する問題