我正在尝试学习如何以最简单/最快的方式使用Python读取.nc(netcdf)文件。我听说可以用3行代码来完成,但是我真的不知道怎么做。

我正在运行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 ,:]我试图更改它,但未编译;但我不知道它在做什么,为什么会这样。

最佳答案

我也使用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层的一种快速方法是:
plt.contourf(data[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

如果要检查数据的各个维度,以便知道可以绘制的内容,只需执行print(nc['Temp'].shape)

关于python - 使用python读取.nc(netcdf)文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36360469/

10-12 18:23