2017-08-14 10 views
0

とアレイの移入Iは(時間、緯度、経度)に対応する形状を有する "PRECIP"(2,3,3)と呼ばれるnumpyの配列を有するパイソン - インデックス配列

array([[[ 0.05368402, 0.43843025, 0.09521903], 
     [ 0.22627141, 0.12920409, 0.17039465], 
     [ 0.48148674, 0.59170703, 0.41321763]], 

     [[ 0.63621704, 0.11119242, 0.25992372], 
     [ 0.67846732, 0.3710733 , 0.25641174], 
     [ 0.1992151 , 0.86837441, 0.80136514]]]) 

私は別のnumpyのを持っています形状のインデックスのリストである「IDX」と呼ばれる配列、(3、4):

array([[0,0,1,1], # time 
     [0,2,0,2], # x coordinate 
     [0,2,0,2]]) # y coordinate 

これまで私は私が「IDX」変数を「PRECIP」変数インデックスすることができました形状(4、)を持つ配列を取得します。私が必要なもの

>>>accum = PRECIP[idx[0,:],idx[1,:],idx[2,:]] 
array([ 0.05368402, 0.41321763, 0.63621704, 0.80136514]) 

BUTは、「IDX」の座標の各対について「PRECIP」の和で占め形状(3,3)とゼロ「ACCUM」の配列です。 「IDX」に記載されていない他のすべての格子点は、基本的に私が配列の「ACCUM」この

>>>accum  
array([[[ 0.68990106, 0. , 0.  ], # 0.68990106 = 0.05368402 + 0.63621704 
     [ 0.  , 0. , 0.  ], 
     [ 0.  , 0. , 1.21458277], # 1.21458277 = 0.41321763 + 0.80136514 

のように見えること、私は任意の助けを感謝したい0

だろう!感謝:)

+0

あなたのデータの小さなサンプルアレイと、良いアイデアです検証目的のためのサンプルの予想される出力、 – DJK

+0

を供給した場合、私は私の質問を更新使用したいものを理解しやすいかもしれそれは小さな無作為のサンプルを見ている。ありがとう! – jdiction

答えて

0

私はあなたが必要なものを正しく理解していればです:

array = [0.5] * 249 

これは、各インデックスで0.5移入長さ249の配列を返します。その後、好きな要素の量を取得する必要がある場合は、スライスすることができます。

もしそれがあなたが望むものでないなら、辞書を使い、このようにしたいタプルであるキーを追加することができます。

dict = {(40, 249): array} 

私はそれが役に立ちそうです。

0

PRECIPのLatカラムとLonカラムのNaNをすべて0に変換し、合計して結果を変形します。

np.nan_to_num(PRECIP[idx[1,:], idx[2,:]]).sum(axis=1).reshape(PRECIP.shape[1], PRECIP.shape[2])