將多個月的nc資料檔案合併成乙個(月平均)

2021-10-18 23:29:36 字數 3994 閱讀 5256

首先是引入要用的庫:

from netcdf4 import dataset   #nc庫功能不用說,讀nc檔案肯定要用

import numpy as np

from pandas import series

import netcdf4 as nc

import tkinter as tk

from tkinter import filedialog #這兩個是用來讀取資料夾的

定義乙個nc檔案類:

class

ncfile

:def

__init__

(self,file_name)

:#用於讀取資料

ncfile=nc.dataset(file_name)

#獲取維度的值,一般有時間、經緯度、各個數值

self.time=ncfile.variables[

'time'][

:].data

self.latitude=ncfile.variables[

'latitude'][

:].data

self.longitude=ncfile.variables[

'longitude'][

:].data

self.e=ncfile.variables[

'e'][:

].data

self.sro=ncfile.variables[

'sro'][

:].data

self.ssro=ncfile.variables[

'ssro'][

:].data

self.tp=ncfile.variables[

'tp'][

:].data

定義幾個要用的全域性變數:

n=

0#這個用來記錄讀入的檔案數

'''下面是用來儲存原始資料的,其實像time、latitude、longitude這種是不需要單獨

記錄的,只是為了在後面偷個懶,就順便打上了,但是這裡其實占用了一部分記憶體,不太好

'''times=

latitudes=

longitudes=

es=[

]sros=

ssros=

tps=

#下面的是用來儲存最後要寫入的資料

times_after=

latitudes_after=

longitudes_after=

es_after=

sros_after=

ssros_after=

tps_after=

然後定義讀入檔案的函式:

def

read_files()

:#讀取存放要合併檔案的資料夾

root=tk.tk(

) root.withdraw(

) folderpath=filedialog.askdirectory(

)

filelist = os.listdir(folderpath)

global n

n=len(filelist)

for i in

range

(n):

temp=ncfile(

str(folderpath)

+"/"

+filelist[i]

)

處理資料,得到每個月月平均值的矩陣:

read_files(

)for i in

range

(n):

,axis=0)

),axis=0)

),axis=0)

),axis=0)

)

最後建立新的nc檔案並寫入資料:

#寫入部分

#建立新檔案

new_nc = nc.dataset(

"test-result.nc"

,'w'

,format

='netcdf4'

)'''

定義維度,後乙個引數表示維度的長度,因為是合併的同乙個產品的資料,所以是統一

的,注意維度的長度一定要和讀入的資料匹配

'''new_nc.createdimension(

'time'

, n)

new_nc.createdimension(

'latitude'

,len

(latitudes[0]

))new_nc.createdimension(

'longitude'

,len

(longitudes[0]

))new_nc.createdimension(

'e',

len(es[0]

))new_nc.createdimension(

'sro'

,len

(sros[0]

))new_nc.createdimension(

'ssro'

,len

(ssros[0]

))new_nc.createdimension(

'tp'

,len

(tps[0]

))#定義變數,這裡需要規定變數的型別,以及限制它的維度

#可以看到,四個與資料相關的變數,其由另外三個基本維度約束

new_nc.createvariable(

'time'

,'u4',(

"time"))

new_nc.createvariable(

'latitude'

,'f',(

"latitude"))

new_nc.createvariable(

'longitude'

,'f',(

"longitude"))

new_nc.createvariable(

'e',

'f',

("time"

,"latitude"

,"longitude"))

new_nc.createvariable(

'sro'

,'f',(

"time"

,"latitude"

,"longitude"))

new_nc.createvariable(

'ssro'

,'f',(

"time"

,"latitude"

,"longitude"))

new_nc.createvariable(

'tp'

,'f',(

"time"

,"latitude"

,"longitude"))

#向變數中填充資料

new_nc.variables[

'latitude'][

:]= latitudes[0]

new_nc.variables[

'longitude'][

:]= longitudes[0]

new_nc.variables[

'e'][:

]=np.array(es_after)

new_nc.variables[

'sro'][

:]=np.array(sros_after)

new_nc.variables[

'ssro'][

:]=np.array(ssros_after)

new_nc.variables[

'tp'][

:]=np.array(tps_after)

#最後記得關閉檔案

new_nc.close(

)

新人,還在學習和探索中,有問題請各位大佬指正。

將多個Excel檔案合併成乙個的原始碼

原始碼是在poi 3.1 final 20080629版本下編譯通過。本原始碼修正了獲取sheet中資料行數的bug,詳情看getrows方法。public class excelmergeutil 以第乙個文件的最後乙個sheet為根,以後的資料都追加在這個sheet後面 sheet rootsh...

多個EXCEL檔案合併成乙個

python的numpy處理起來會比較方便,有空實現一下,這裡是excel內部 的方式 合併方法如下 1.需要把多個excel表都放在同乙個資料夾裡面,並在這個資料夾裡面新建乙個excel。如圖所示 2.用microsoft excel開啟新建的excel表,並右鍵單擊sheet1,找到 檢視 單擊...

將多個jar合併成乙個jar的問題

1 將所有jar檔案複製至某臨時目錄中,通過jar命令解壓得到所有的.class檔案 jar xvf xx.jar xx.jar必須為具體的jar,不能為 jar,會報filenotfoundexception 2 刪除臨時目錄下所有的jar檔案 del f jar 3 合併所有.class檔案至j...