2016-05-10 8 views
0

私は現在、海洋モデルのCCとCIを作成するためにpythonを使用するプロジェクトに取り組んでいます。私はmpl_toolkits.basemapからの補間を使用しました。ここに私の次のコードは次のとおりです。プロパティを失うことなくnumpy配列の3Dリストを変換する方法

sal_arr=[] 
for k in xrange(len(depth)): 
    salty=data.variables['salt'][k,:,:] 
    salt=mp.interp(salty,lon,lat,lon_rho,lat_rho,checkbounds=False,masked=False,order=1)  
    sal_arr.append(salt) 

私はリストに私の補間データを取得すると、私は(私の結果の一部)だ:

masked_array(data = 
[[-- -- -- ..., -- -- --] 
[-- -- -- ..., -- -- --] 
[-- -- -- ..., -- -- --] 
..., 
[-- -- -- ..., -- -- --] 
[-- -- -- ..., -- -- --] 
[-- -- -- ..., -- -- --]], 
     mask = 
[[ True True True ..., True True True] 
[ True True True ..., True True True] 
[ True True True ..., True True True] 
..., 
[ True True True ..., True True True] 
[ True True True ..., True True True] 
[ True True True ..., True True True]], 
    fill_value = -9.99e+33) 

しかし、私はNPを使用してnumpyの配列に変換するとき.asarray機能、それはへのデータの形式を変更することが判明した:

array([[[ 0.  , 0.  , 0.  , ..., 0.  , 
     0.  , 0.  ], 
    [ 0.  , 0.  , 0.  , ..., 0.  , 
     0.  , 0.  ], 
    [ 0.  , 0.  , 0.  , ..., 0.  , 
     0.  , 0.  ], 
    ..., 
    [ 35.85155781, 35.82556325, 35.7995687 , ..., 0.  , 
     0.  , 0.  ], 
    [ 35.86569978, 35.84589233, 35.82608487, ..., 0.  , 
     0.  , 0.  ], 
    [ 35.88255757, 35.87000866, 35.85745976, ..., 0.  , 
     0.  , 0.  ]] 

そして、私が使用してそれをプロットするとき、それはOKだったので、私は理解できない私の補間では、いくつかのノイズを作成するために起こります私の唇からのデータt。また、私は関数を使用しようとしました:

np.ma.masked_where 

しかしあまり助けになりません。誰かが私に別の方向を示唆することができたら、私はそれを感謝します。

は、マスクされた配列は、2つの属性、「データ」列と「マスク」の配列を持っているあなたに

答えて

0

ありがとうございます。通常の表示では、マスクはデータの選択された値を隠し、代わりに ' - 'を表示します。あなたのケースでは、すべての要素がマスクされているので、それはすべてあなたが見るものです。

そのasarrayアクションはマスクを削除し、データを表示します。マスクされた配列の中にすべてがありましたが、あなたはそれを見ていませんでした。

numpyマスクされた配列を読む必要があります。

マスクされた配列が得られた理由、特にすべての値がマスクされた配列については、interpのドキュメントを参照する必要があります。

マスク

http://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.interp

:Trueの場合、XINと陰の範囲外の点は(マスクされた配列に)マスクされています。 maskedが数値に設定されている場合、xinとyinの範囲外の点はその数に設定されます。デフォルトはFalseです。

+0

私はまた、np.ma.masked_outsideを使用しようとしました。 Idkまだ、私はそれを試してみましょう、ありがとう。 interp関数の詳細を読んでいきます。 – moehbon

+0

はい、その 'masked'パラメータを試してみてください。 'checked'でもあるかもしれません。 'salty'値のいくつかを表示する必要があるかもしれません。それはマスクされていますか? – hpaulj

関連する問題