首先是引入要用的庫:
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...