成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

盤點兩種使用Python讀取.nc文件的方法

開發 后端
nc 全稱 netCDF(The Network Common Data Form),可以用來存儲一系列的數組,就是這么簡單。既然 nc 可以用來一系列的數組,所以經常被用來存儲科學觀測數據,最好還是長時間序列的。

大家好,我是Python進階者。

前言

前幾天有個叫【溫池】的粉絲在Python鉆石交流群里問了一道關于.nc文件讀取的問題,如下圖所示。

.nc文件和常規的文件不太一樣,有專門的第三方處理庫,netCDF4,需要安裝才行。

  1. pip install netCDF4 

如果覺得下載的慢,可以使用換源的方法進行下載:

  1. 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 可以存儲不同波段的長時間觀測結果,是不是非常方便呢?

二、解決方案

方法一:常規讀取 這個方法是在網上找到的,代碼如下,其中關鍵部分有注釋,應該都可以看得懂。

  1. # -*- coding: utf-8 -*- 
  2. import netCDF4 
  3. from netCDF4 import Dataset 
  4. nc_obj = Dataset('D:\\tem_e0025_2.nc'
  5.  
  6. # 查看nc文件有些啥東東 
  7. # print(nc_obj) 
  8. # print('---------------------------------------'
  9.  
  10. # 查看nc文件中的變量,結果是:['lon''lat''lev''time''tem'
  11. # print(nc_obj.variables.keys()) 
  12. for i in nc_obj.variables.keys(): 
  13. #     print(i) 
  14. # print('---------------------------------------'
  15.  
  16. # 查看每個變量的信息 
  17. # print(nc_obj.variables['lat']) 
  18. # print(nc_obj.variables['lon']) 
  19. # print(nc_obj.variables['lev']) 
  20. # print(nc_obj.variables['time']) 
  21. # print(nc_obj.variables['tem']) 
  22. # print('---------------------------------------'
  23.  
  24. # 查看每個變量的屬性 
  25. # print(nc_obj.variables['lat'].ncattrs()) 
  26. # print(nc_obj.variables['lon'].ncattrs()) 
  27. # print(nc_obj.variables['lev'].ncattrs()) 
  28. # print(nc_obj.variables['time'].ncattrs()) 
  29. # print(nc_obj.variables['tem'].ncattrs()) 
  30. # print(nc_obj.variables['lat'].units) 
  31. # print(nc_obj.variables['lon'].units) 
  32. # print('---------------------------------------'
  33.  
  34. # 讀取數據值 
  35. lat = (nc_obj.variables['lat'][:]) 
  36. lon = (nc_obj.variables['lon'][:]) 
  37. lev = (nc_obj.variables['lev'][:]) 
  38. # print(lev) 
  39. time = (nc_obj.variables['time'][:]) 
  40. tem = (nc_obj.variables['tem'][:]) 
  41.  
  42. # lat = (nc_obj.variables['lat'][1:2]) 
  43. # lon = (nc_obj.variables['lon'][1:2]) 
  44. # lev = (nc_obj.variables['lev'][1:2]) 
  45. # time1 = (nc_obj.variables['time'][1:2]) 
  46. # tem = (nc_obj.variables['tem'][1:2]) 
  47.  
  48. # print(lat) 
  49. # print(len(lat)) 
  50. # print(lon) 
  51. # print(lev) 
  52. # print(time1) 
  53. # print(len(time)) 
  54. # print(tem) 
  55. # print('---------------******-------------------'
  56.  
  57. file = open('ppm_lat.txt''a'
  58. file.write('lat,lon,time,tem'+'\n'
  59. file.write('lat,lon'+'\n'
  60. file.write('lat'+'\n'
  61. for i in range(len(lat)): 
  62.     file.write(str(lat[i])+',\n'
  63.     file.write(str(lon[i])+','
  64.     file.write(str(lev[i])+','
  65.     file.write(str(time[i])+','
  66.     file.write(str(tem[i])+',\n'
  67. file.close() 

你只需要替換代碼中的nc文件路徑即可,其他的內容,你可以自行自取。

方法二:直接取值 這個方法是【溫池】自己提供的,也是可以讀取文件,進行取值的。

  1. # -*- coding: utf-8 -*- 
  2. import netCDF4 
  3. from netCDF4 import Dataset 
  4.  
  5.  
  6. # 查看nc文件中的變量,結果是:['lon''lat''lev''time''tem'
  7. # print(nc_obj.variables.keys()) 
  8. for i in nc_obj.variables.keys(): 
  9. #     print(i) 
  10. # print('---------------------------------------'
  11.  
  12. A_temp = Dataset(r'E:\PythonCrawler\有趣的代碼\數據分析\最小二乘法數據分析代碼和數據\Temperature_20211031.nc'
  13. lat = A_temp['latitude'][:].data  # 497個數字 
  14. lon = A_temp['longitude'][:].data  # 409個數字 
  15. temp = A_temp['T'][:].data  # 409個數字 
  16. depth = A_temp['depth'][:].data  # 51個數字 
  17.  
  18. print(len(lat)) 
  19. print(len(lon)) 

 

本文參考鏈接:1. https://blog.csdn.net/showpingzhang/article/details/833847802. https://www.cnblogs.com/shoufengwei/p/9068379.html

取值之后,接下來做回歸、聚類等,就不展開贅述了。

三、總結

我是Python進階者。本文基于粉絲提問,針對.nc文件讀取的問題,給出了兩種解決方法,順利幫助粉絲解決了問題。

 

責任編輯:姜華 來源: Python爬蟲與數據挖掘
相關推薦

2010-03-15 15:30:35

Python模塊

2010-08-06 09:38:11

Flex讀取XML

2010-08-02 16:58:08

Flex配置文件

2021-11-01 09:00:30

CSVExcelPython

2009-06-08 20:07:44

Eclipse中使用p

2021-12-03 09:01:36

PythonJson文件Python基礎

2011-06-23 09:07:16

2012-10-16 09:40:38

洗牌算法

2010-03-11 14:34:47

Python環境

2010-10-14 14:33:15

MySQL多表聯查

2011-08-09 13:50:01

iPhone動畫UIView

2010-09-17 09:37:27

Java安裝方法

2010-07-15 14:38:55

Perl eval函數

2010-11-19 11:57:15

Oracle密碼丟失

2011-03-03 17:00:37

pure-ftpdchroot

2021-10-09 09:15:01

Windows 11安全模式系統

2009-06-02 14:12:26

Hibernate配置文件格式

2010-03-16 15:23:32

java動態載入

2009-12-07 13:42:24

WCF框架

2010-07-13 10:10:28

WPF
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄a视频 | 久久香蕉精品视频 | 亚洲国产成人精品一区二区 | 精品成人免费一区二区在线播放 | 久久久久亚洲精品 | 国内精品久久久久 | 欧美综合一区 | 四虎永久免费影院 | 久久久久久亚洲精品 | 国产免费又黄又爽又刺激蜜月al | 自拍偷拍亚洲欧美 | 天天色综 | 亚洲一区中文字幕 | 视频一区在线观看 | 69亚洲精品 | 高清免费av | 日韩一区二区三区在线 | 亚洲二区视频 | 日韩av最新网址 | 91视频麻豆 | 欧美日韩激情 | 欧美一级二级在线观看 | 精品国产一二三区 | 成人在线视频免费看 | 国产中文一区二区三区 | 91高清免费 | 狠狠干在线 | 欧美在线观看黄色 | 欧美日韩亚洲系列 | 91精品国产综合久久婷婷香蕉 | 黄色大片免费网站 | 黄色毛片在线播放 | 亚洲精品一区二三区不卡 | 超碰婷婷| 精品国产伦一区二区三区观看体验 | 国产高清视频 | 91精品国产色综合久久 | 亚洲午夜一区二区 | 最新国产在线 | 亚洲免费在线播放 | 黄色精品 |