让建站和SEO变得简单

让不懂建站的用户快速建站,让会建站的提高建站效率!

你的位置:55购彩 > 首页 > 清点两种使用Python读取.nc文献的行径

清点两种使用Python读取.nc文献的行径

发布日期:2022-05-15 15:31    点击次数:72

专家好,我是Python进阶者。

引子

前几天有个叫【温池】的粉丝在Python钻石疏通群里问了一路对于.nc文献读取的问题,如下图所示。

.nc文献和惯例的文献不太相同,有有利的第三方处理库,netCDF4,需要安设才行。

pip install netCDF4 

要是以为下载的慢,不错使用换源的行径进行下载:

pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple netCDF4 

对于永远换源不错参考这个著作:手把手教你进行pip换源,让你的Python库下载嗖嗖的(系列二)、手把手教你进行pip换源,让你的Python库下载嗖嗖的。

一、nc文献基础学问

nc 全称 netCDF(The Network Common Data Form),不错用来存储一系列的数组,便是这样粗略。对于nc文献的先容,不错参考:

https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_introduction.html

既然 nc 不错用来一系列的数组,是以常常被用来存储科学视察数据,最佳仍是长本事序列的。

试想一下一个科学家每隔一分钟集会一次施行数据并存储了下来,要是无用这种神色存储,本事长了可能就需要创建一系列的 csv 或者 txt 等,而接收 nc 一个文献就不错惩办,是不是很肤浅呢?

更肤浅的是要是这个科学施行与时局、水文、温度等地舆信息略略沾点边的,饱胀也不错用 nc 进行存储, GeoTiff 酌定能多存几个波段(此处波段不错认为是时局、水文等不同信号),而 nc 不错存储不同波段的长本事视察遵守,是不是相配肤浅呢?

二、解决决策

行径一:惯例读取 这个行径是在网上找到的,代码如下,其中环节部分有注释,应该都不错看得懂。

# -*- coding: utf-8 -*- import netCDF4 from netCDF4 import Dataset nc_obj = Dataset('D:\\tem_e0025_2.nc')  # 检验nc文献有些啥东东 # print(nc_obj) # print('---------------------------------------')  # 检验nc文献中的变量,遵守是:['lon', 'lat', 'lev', 'time', 'tem'] # print(nc_obj.variables.keys()) # for i in nc_obj.variables.keys(): #     print(i) # print('---------------------------------------')  # 检验每个变量的信息 # print(nc_obj.variables['lat']) # print(nc_obj.variables['lon']) # print(nc_obj.variables['lev']) # print(nc_obj.variables['time']) # print(nc_obj.variables['tem']) # print('---------------------------------------')  # 检验每个变量的属性 # print(nc_obj.variables['lat'].ncattrs()) # print(nc_obj.variables['lon'].ncattrs()) # print(nc_obj.variables['lev'].ncattrs()) # print(nc_obj.variables['time'].ncattrs()) # print(nc_obj.variables['tem'].ncattrs()) # # print(nc_obj.variables['lat'].units) # print(nc_obj.variables['lon'].units) # print('---------------------------------------')  # 读取数据值 lat = (nc_obj.variables['lat'][:]) lon = (nc_obj.variables['lon'][:]) lev = (nc_obj.variables['lev'][:]) # print(lev) time = (nc_obj.variables['time'][:]) tem = (nc_obj.variables['tem'][:])  # lat = (nc_obj.variables['lat'][1:2]) # lon = (nc_obj.variables['lon'][1:2]) # lev = (nc_obj.variables['lev'][1:2]) # time1 = (nc_obj.variables['time'][1:2]) # tem = (nc_obj.variables['tem'][1:2])  # print(lat) # print(len(lat)) # print(lon) # print(lev) # print(time1) # print(len(time)) # print(tem) # print('---------------******-------------------')  file = open('ppm_lat.txt', 'a') file.write('lat,lon,time,tem'+'\n') file.write('lat,lon'+'\n') file.write('lat'+'\n') for i in range(len(lat)):     file.write(str(lat[i])+',\n')     file.write(str(lon[i])+',')     file.write(str(lev[i])+',')     file.write(str(time[i])+',')     file.write(str(tem[i])+',\n') file.close() 

你只需要替换代码中的nc文献旅途即可,其他的实质,你不错自行自取。

行径二:径直取值 这个行径是【温池】我方提供的,亦然不错读取文献,进行取值的。

# -*- coding: utf-8 -*- import netCDF4 from netCDF4 import Dataset   # 检验nc文献中的变量,遵守是:['lon', 'lat', 'lev', 'time', 'tem'] # print(nc_obj.variables.keys()) # for i in nc_obj.variables.keys(): #     print(i) # print('---------------------------------------')  A_temp = Dataset(r'E:\PythonCrawler\意旨的代码\数据分析\最小二乘法数据分析代码和数据\Temperature_20211031.nc') lat = A_temp['latitude'][:].data  # 497个数字 lon = A_temp['longitude'][:].data  # 409个数字 temp = A_temp['T'][:].data  # 409个数字 depth = A_temp['depth'][:].data  # 51个数字  print(len(lat)) print(len(lon)) 

 

本文参考一语气:1. https://blog.csdn.net/showpingzhang/article/details/833847802. https://www.cnblogs.com/shoufengwei/p/9068379.html

取值之后,接下来做追忆、聚类等,就不张开赘述了。

三、总结

我是Python进阶者。本文基于粉丝发问,针对.nc文献读取的问题,给出了两种解决行径,胜利匡助粉丝解决了问题。

 



Powered by 55购彩 @2013-2022 RSS地图 HTML地图

Copyright 365站群 © 2013-2021 365建站器 版权所有