2016-07-26 38 views
0

私は衛星と気象モデルから風データのpcolourmeshをプロットしています。値はすべてnetcdfファイルに格納されます。以下では、70または0に等しい値をNaNと置き換えようとしていますが、これはエラーにはなりませんが、NaNも作成されません。nozerosは元のデータセットと同じサイズです。 70と0Python netcdf - 指定された値をNaNに変換します

import netCDF4 as nc 
import numpy as np 
import matplotlib.pyplot as plt 
import csv as cs 
import pandas as pd 

ncfile = nc.Dataset('C:\Users\mmso2\Google Drive\ENVI_I-PAC_2007_10_21_21_22_47.nc') 
SARwind = ncfile.variables['sar_wind'] 
ModelWind = ncfile.variables['model_speed'] 
LON = ncfile.variables['longitude'] 
LAT = ncfile.variables['latitude'] 
LandMask = ncfile.variables['mask'] 

    #clean the data of values = 70 
    SARwind_nan = SARwind 

    for i in SARwind_nan: 
     if i.any() == 70: 
      i = np.nan 
     elif i.any()==0: 
      i = np.nan 

    nozeros=np.count_nonzero(~np.isnan(SARwind_nan)) 

はまた、私がNaNにLandMask> = 0は、これを行うには良い方法がある場合の領域を変換したい?==私は、データを見てきましたし、それが値を持っていますか

おかげ

答えて

1

あなたのコード内のいくつかの問題は、インデントの構文エラーを脇に設定する、があります。

以下のコードは何も行いません。 iとは何ですか?結果は保存されません。

for i in SARwind_nan: 
     if i.any() == 70: 
      i = np.nan 
      ... 

ここでは、必要な操作を行う例を示します。

SARwind = np.array([ 
    [1,2,0,-4,-5], 
    [6,0,70,-9,-15], 
    [10,11,-12,70,-14], 
    [0,17,70,-19,-20], 
    ], dtype=np.float32) 

SARwind_nan = SARwind.copy() 
SARwind_nan[SARwind_nan == 0.0] = np.nan 
SARwind_nan[SARwind_nan == 70.0] = np.nan 

print SARwind_nan 

nozeros=np.count_nonzero(~np.isnan(SARwind_nan)) 
print nozeros 
+0

コメントありがとうございます。値がnetCDFファイルのものであるので 'SARwind_nan = SARwind [:]。copy()'を設定していますが、動作するようです。 –

関連する問題