2017-03-24 21 views
0

私はこのようになりますnumpyの配列を持っている:平均ゼロ値

1 0 0 0 200 0 0 0 1 
6 0 0 0 2 0 0 0 4.3 
5 0 0 0 1 0 0 0 7.1 

はプットが

1 100 100 100 200 100 100 100 1 
6 4 4 4 2 3.15 3.15 3.15 4.3 
5 3 3 3 1 4.05 4.05 4.05 7.1 

だろうと私はすべて0を交換したいと思いますアウト期待その隣人の平均を持つ値。どんなヒントも歓迎!どうもありがとう!

+1

[so]へようこそ!私たちはコード作成サービスではないので、[ask]を見直して、あなたが試したことを私たちに見せてください。 – TemporalWolf

+0

ええ、通常、あなたが "ヒント"を求めているのであれば、あなたの質問はおそらく話題にならないでしょう。 –

+0

申し訳ありませんが、私はscipy.interpolate.interp2dを試しましたが、次元は決してうまくいかなかったのです。 – Durin

答えて

0

サンプル配列の構造は、あなたのアレイ全体に保存されている場合、このコードは動作します:

In [159]: def avg_func(r): 
       lavg = (r[0] + r[4])/2.0 
       ravg = (r[4] + r[-1])/2.0 
       r[1:4] = lavg 
       r[5:-1] = ravg 
       return r 

In [160]: np.apply_along_axis(avg_func, 1, arr) 
Out[160]: 
array([[ 1. , 100.5 , 100.5 , 100.5 , 200. , 100.5 , 100.5 , 
      100.5 , 1. ], 
     [ 6. , 4. , 4. , 4. , 2. , 3.15, 3.15, 
      3.15, 4.3 ], 
     [ 5. , 3. , 3. , 3. , 1. , 4.05, 4.05, 
      4.05, 7.1 ]]) 

しかし、あなたはこのインデックスをハードコーディングするとちょっと厄介です見ることができるように。ここでavg_funcと定義すると、創造的になるだけです。このソリューションを改善して創造的になってください。また、この実装では、入力配列のインプレース修正が行われます。