当前位置: 代码迷 >> 综合 >> netCDF(气象方向)
  详细解决方案

netCDF(气象方向)

热度:45   发布时间:2023-12-14 07:39:08.0

benben以下是经常需要用的的库

pip install pandas

pip install numpy

pip install netcdf4

首先要了解一下nc文件(例如xxx.nc)

1.dimensions:维度大小

2.variables:变量

dimensions:其中包含N个名子,数据名字的内容长度固定;而time则是UNLIMITED任意长度

variables:在variables下每个变量形式为floatuwind_speed(time,nele) time 和nele都是dimensions名称

转自(若有侵权请及时联系作者) Python处理netCDF文件 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/100574643

使用netCDF库写

#--导入netCDF4库--#
import netCDF4 as nc
?
#--读取netCDF格式文件,'w'表示可对文件进行写入操作,若不存在example.nc文件,则自动创建--#
data = nc.Dataset('example.nc','w',format = 'NETCDF4')
?
#--创建一个十行十列数组--#
array_variable = np.ones([10,10])
array_variable_t = np.ones([5,5])
?
#--创建维度,第一个参数为维度名,第二个参数为维度长度--#
data.createDimension('x',10)
data.createDimension('y',10)
?
#--创建变量,第一个参数为变量名,第二个参数为变量数据类型,第三个变量为变量维度,第四个变量fill_value表示填充值(默认值),创建变量之前必须先创建维度
#--b:byte f4:float i:int --#
data.createVariable('name','b',('y','x'),fill_value = 9999)
?
#--给创建好的变量赋值,将之前创建的数组数据传入到变量中--#
#--第一个中括号用于选择所需要处理的变量--#
#--第二个中括号用于选择所需要处理的数据范围,等号左边和右边的数组形状要一致--#
#--冒号:表示数组切片--#
data.variables['name'][:] = array_variable
data.variables['name'][0:5,0:5] = array_variable_t
?
#--给创建的变量添加属性--#
#--.name表示添加名为name的属性,而'温度'是该属性的名称--#
data.variable['name'].name = '温度'
?
#--给文件添加全局属性,类似于给变量添加属性的操作--#
data.lat = 31.9198
data.lon = 119.79

读取netCDF文件中的数据

import netCDF4 as nc
import numpy as np
data = nc.Dataset('example.nc')
?
#--直接输出文件信息,包括维度,全局变量,变量名,但是看不到某个变量中保存的数据以及变量属性--#
print(data)
?
#--输出name变量的信息,可以看到变量的属性信息--#
print(data['name'])
?
#--输出name变量中保存的所有数据,矩阵的形式--#
print(data['name'][:])
?
#--用矩阵保存nc文件数据,并存储到CSV文件中,用逗号隔开--#
matrix = data['name'][:]
matrix = np.array(matrix)
np.savetxt('name.csv',matrix,delimiter = ',')

个人学习,当笔记用,如若侵权什么的直接联系本人删除即可