2016-04-01 196 views
3

私は、最も簡単で最速の方法でPythonを使って.nc(netcdf)ファイルを読む方法を学びたいと思っています。私はそれがコードの3行で行うことができると聞いたが、私は本当にどのように知りません。Pythonを使って.nc(netcdf)ファイルを読む

私はMITgcm数値モデルを実行しています。私は、NCviewのようなプログラムと同じ方法で出力データを視覚化する簡単な方法を得ようとしていますが、Pythonを使って読むことができるようにパラメータをカスタマイズすることができます。

私はこれを見つけた:

from matplotlib import pyplot as plt 
import pandas as pd 
import netCDF4 
fp='uwstemp.nc' 
nc = netCDF4.Dataset(fp) 
plt.imshow(nc['Temp'][1,:,0,:]) 
plt.show() 

私はそれをしたいようですが、大体働いたが、私はそれが何をしているかを単語単位を理解したいと思います。私は 'Temp'が私の変数の一つだと思いますが、私の変数が何であるかを理解する方法はわかりません。

特に、私は理解していませんplt.imshow(nc['Temp'][1,:,0,:]) thhat [1、:、0、:]私はそれを変更しようとしてコンパイルしません。しかし、私はそれが何をしているのか、なぜこの数字になっているのか理解していません。

+1

".nc"ファイルとは何ですか?テキストまたはバイナリデータを含んでいますか? – skrrgwasme

+0

netcdfの拡張子です – Alessandro

+0

バイナリデータが含まれています –

答えて

2

私もMITgcmを使用しています。 state.ncの出力があるとします。

from scipy.io import netcdf 
import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 

データを読み込むための最も簡単な方法は次のとおりです:すべての 最初にあなたが必要なすべてをインポートすることを確認してください

file2read = netcdf.NetCDFFile(path+'state.nc','r') 
temp = file2read.variables[var] # var can be 'Theta', 'S', 'V', 'U' etc.. 
data = temp[:]*1 
file2read.close() 

そして、時刻tにおける層Zを言うプロットする簡単な方法は次のとおりです。

from matplotlib import pyplot as plt # import libraries 
import pandas as pd # import libraries 
import netCDF4 # import libraries 
fp='uwstemp.nc' # your file name with the eventual path 
nc = netCDF4.Dataset(fp) # reading the nc file and creating Dataset 
""" in this dataset each component will be 
in the form nt,nz,ny,nx i.e. all the variables will be flipped. """ 
plt.imshow(nc['Temp'][1,:,0,:]) 
""" imshow is a 2D plot function 
according to what I have said before this will plot the second 
iteration of the vertical slize with y = 0, one of the vertical 
boundaries of your model. """ 
plt.show() # this shows the plot 
plt.contourf(data[t,z,:,:]) 

あなたの質問に答えるために、私は、コードをコメント

データのさまざまな寸法をチェックして、簡単にプロットできるものを確認したい場合print(nc['Temp'].shape)

+0

データの読み取りプロセスの各行の機能を説明できればうれしいです。 –

+0

うわー、私はあなたを愛しています。一般に、私は自分の変数が何であるか知りません。私の変数は何ですか? –

+1

自分のマシンでnetcdf4を使うことができないので、どうやってそれをやるのか分かりません。 bashの簡単な方法の1つは、netcdfファイルのすべての変数をプロットするncdump -h filenameです。私が使用するnetcdf.NetCDFFileでは、print(file2read.variables.keys())を実行して、ファイル内のすべての変数のリストを取得することもできます。 – Alessandro

関連する問題