-
2021-09-16 00:05:50
代码:cdo cat 输入文件名 输出文件名
注解:输入文件名:例如:1999-01.nc 1999-02.nc … 1999-12.nc 如果要合并这十二的文件, 输入文件名为 1999*.nc ;输出文件名:自己定义就行更多相关内容 -
将多个月的nc数据文件合并成一个(月平均)
2021-02-04 10:41:18将多个月的nc数据文件合成一个(月平均) 最近在处理nc数据,希望可以获得多年的月平均数据。但是ERA这个产品从网站上下载到的是每个月的日数据,所以我希望可以把他合成一个,以每个月月平均数据存储的nc文件。 ...将多个月的nc数据文件合并成一个(月平均)
最近在处理nc数据,希望可以获得多年的月平均数据。但是ERA这个产品从网站上下载到的是每个月的日数据,所以我希望可以把他合成一个,以每个月月平均数据存储的nc文件。
首先是引入要用的库:
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]) times.append(temp.time) latitudes.append(temp.latitude) longitudes.append(temp.longitude) es.append(temp.e) sros.append(temp.sro) ssros.append(temp.ssro) tps.append(temp.tp)
处理数据,得到每个月月平均值的矩阵:
read_files() for i in range(n): tps_after.append(np.mean(tps[i],axis=0)) es_after.append(np.mean(es[i],axis=0)) sros_after.append(np.mean(sros[i],axis=0)) ssros_after.append(np.mean(ssros[i],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()
新人,还在学习和探索中,有问题请各位大佬指正。
-
python 合并多个有规则命名的nc文件
2021-08-11 09:36:53现有多个nc文件,命名除了年份不同外,其他皆相同。希望将多个的nc文件合并为一个。 其中,每个nc文件内包含如下内容,包含12个月均数据 因此,我们可以知道,合并两个nc文件,time应该=‘24’,合并三个,time=‘36...python 合并多个有规则命名的nc文件
现有多个nc文件,命名除了年份不同外,其他皆相同。希望将多个的nc文件合并为一个。
其中,每个nc文件内包含如下内容,包含12个月均数据
因此,我们可以知道,合并两个nc文件,time应该=‘24’,合并三个,time=‘36’。以此类推,合并x年,time=x*12。
主要通过xarray实现合并功能,并写出合并后的nc文件:
#导入用到的库 import xarray as xr import os #首先,利用一个循环将需要合并的年份挑选出来。我这里选择1982-2012年的数据 file_xadv=[] for year in range(1982,2013): fn=os.path.join(path1,'xadv'+'%04.0f'%year+'.mon.161x720.nc') file_xadv.append(fn)
运行后可以得到所有完整路径的文件列表:
下面就是进行合并啦:
#合并nc文件,通过xarray打开nc文件,并得到所需变量的xarray.DataArray,之后利用xarray.concat()实现合并的功能 xadv_new=[] for i in range(len(file_xadv)): xadv=xr.open_dataset(file_xadv[i])['xadv'] xadv_new.append((xadv)) da=xr.concat(hadv_new,dim='time')
运行发现合并好啦:
xarray.concat()官方介绍如下:
xarray.concat
例外,官网也给出了其他的合并方式,大家可以按需所求:
1、有关沿单个维度组合数据集或数据数组的信息,使用 concatenate。
2、有关合并具有不同变量的数据集,使用 merge。
3、 有关合并具有不同索引或缺失值的数据集或数据数组的信息,使用 combine。
4、有关沿多个维度组合数据集或数据数组的信息,使用 combining.multi。
Combining data
附上完整实现代码:import xarray as xr import os path1='E:\\BaiduNetdiskDownload\\MSE_budget\\xadv\\' file_xadv=[] for year in range(1982,2013): fn=os.path.join(path1,'xadv'+'%04.0f'%year+'.mon.161x720.nc') file_xadv.append(fn) hadv_new=[] for i in range(len(file_xadv)): xadv=xr.open_dataset(file_xadv[i])['xadv'] hadv_new.append((xadv)) da=xr.concat(hadv_new,dim='time') da.to_netcdf('D:\\desktopppp\\sst_olr\\interp_nan\\xadv_interp.nc')#输出合并后的nc文件
好啦,今天的分析就到这里啦,感兴趣的小伙伴快去尝试一下吧~
一个努力学习python的海洋小白 水平有限,欢迎指正!!! 欢迎评论、收藏。
-
python实现批量合并多个文件为一个
2022-05-21 22:05:25python实现批量文件合并,利用pandas来实现多个df文件合并为一个今天做了一个项目,探究一下上世纪60年代到现在各国经济发展状况,需要将世界各国的gdp数据获取下来,然后做个可视化,为了下载方便,文件都是单独保存的,大概就是有多少个国家,就有多少个文件吧,但是为了方便可视化,需要将他们合并在一个文件里,一个个手动合并,岂不是要累死…来看看python是怎么实现的吧!!!
首先我们来看看文件里面都有些啥数据
这是也门的gdp数据
我的文件夹思路:
我们的数据结构比较简单(也是我为了方便后期合并有意为之)可以用pandas读入数据,然后使用merge函数实现拼接,批量也很好实现,先用一个函数获取目标文件夹下所有文件路径,(我这个文件夹里只有txt文件,如果有其它格式的文件,加个判断语句也可完成),之后再遍历拼接,就行了
环境配置:
pip install pandas
上代码:
import pandas as pd import glob # 批量合并多个文件为一个 def get_one(): ''' 这是一个批量合并文件为一个的函数,只需修改文件路径、目标路径、联结字段、联结方式即可用 ''' # 首先读入一个文件作为初始的df df3 = pd.read_csv(f'.\\各国gdp1\\中国.txt') # 获取目标文件夹下所有文件路径,赋值给file_names file_names = glob.glob(f'.\\各国gdp1\\*') # 遍历每一个文件 for file in file_names: # 读取文件 df1 = pd.read_csv(file) # 合并文件,根据列名’年份‘进行合并,左联结 df3 = pd.merge(df3,df1,on=['年份'],how='left') # 数据去重 df3.drop_duplicates(['年份'],inplace=True) print(df3) # 保存为csv格式,不要索引列 df3.to_csv('合并数据.csv',index=False) if __name__ == '__main__': get_one()
效果图
感谢阅读,下次见 -
Matlab拼接(merge)两个nc文件
2020-12-01 21:15:13创建 nc 文件主要分为以下几个步骤 define input and output directories define dimensions define variables read nc files and merge variables(实际中可跳过) put variables into nc put attribute into nc ... -
python使用PyPDF2把多个pdf文件合并成一个
2021-03-18 09:51:21python处理pdf文件我们需要一个第三方库PyPDF2PyPDF2是一个功能虽然不是很多,但却非常好用的第三方库,它提供了pdf文件的读写,拆分,合并等功能,使用pip命令进行安装。pip3 install PyPDF2合并pdf文件代码import ... -
如何利用Python将一年的.nc4文件压缩成一个nc文件
2020-04-14 23:25:56这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、... -
ECMWF 不同step 的 NC 文件如何合并
2021-04-26 18:45:18该楼层疑似违规已被系统折叠隐藏此楼查看此楼最近研究python批量下载ecmwf的nc文件,老师要求step是0,6两个参数,这样的话python的请求就是两个server.retrieve({"class": "ei","dataset": "interim","date": date,... -
机明NC合并软件
2018-07-18 21:53:34机明nc软件合并,可以用来合并NC文件,串程式,添加刀路 -
git format 合并多个patch
2020-08-13 14:38:09假如要合并下面四个patch b8e069a2a8da ACPI/IORT: Add an input ID to acpi_dma_configure() 3a3d208beede ACPI/IORT: Remove useless PCI bus walk 39c3cf566cea ACPI/IORT: Make iort_msi_map_rid() PCI ... -
Python批量处理文件 将多个文件合并
2018-06-23 21:04:21需求:把一个文件夹下的多个csv文件合并成一个文件 -
grep命令--文件过滤分割与合并
2017-08-18 10:45:41grep命令文件过滤分割与合并grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印... -
用C语言写的合并BOM和坐标文件的小工具
2021-12-15 09:58:04我这边反复看了ALLEGRO设置,都无法在同一个文件输出左边文件和原件参数。 要想可口,自己动手。我琢磨自己合并一下。打算和BOM单合并一下就可以了。基本思路就是从BOM单只提取原件标号和参数,保存成一个bom文件。... -
[区间dp] NC13230合并回文子串
2020-07-01 22:05:3550 ),合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba... -
PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统
2020-10-06 22:20:42PolarFS 是一个具有超低延迟和高可用性的分布式文件系统,专为POLARDB 数据库服务而设计,目前已在阿里云上提供。PolarFS 在用户空间中利用了轻量级网络堆栈和I/O 堆栈,充分利用了RDMA、NVMe和SPDK等新兴技术。通过... -
牛客NC13230:合并回文子串
2020-05-16 11:33:39输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串... -
利用grunt插件来压缩js和css文件用来减少http请求,提高页面效率
2021-08-05 03:44:141.安装nodejs 2.... var jsp = require("uglify-js").parser; var pro = require(...则需要编写上面的脚本,命名为cssmin.js 然后利用node命令在命令行中运行node cssmin.js 最后多个css会被压缩成一个index.css -
iCAM操机助手V2.1永久免费.zip
2020-12-05 16:18:301、优化软件速度,在实际工作中合并100条NC程序(文件共150MB)只需10秒钟完成!速度秒杀任何同类软件!速度是同类型软件之中最快! (包括修改坐标、程序头尾、修改刀号、合并NC等等操作。) 2、右键菜单增加批量... -
道亨满应力文件算塔使用手册.doc
2019-12-17 10:50:47道亨满应力文件算塔使用手册.DOC 文件内有满应力文件算法规范说明 源程序全部使用FORTRAN77语言,适用于各类微机 -
关于OpenCV的图像矩阵拼接(Python版本)及numpy.concatenate函数介绍
2020-12-21 20:17:24功能:给定任意大小的两个图片(矩阵),水平连接成一个图片(矩阵)。高度不同时,使用黑色作为高度较小者的边缘填充,图片垂直居中。 import cv2 import numpy as np def image_join(image1, image2): """ 水平... -
合并二叉树(Java)
2021-11-28 18:57:38已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。 例如 思路 Java实现 递归 代码实现 import java.util.*; /* * public class ... -
多小波对音频信号处理的MATLAB技术实现.pdf
2021-09-21 19:17:13音频信号处理 -
Python爬虫:多线程的应用和pdf文件相关操作
2022-03-24 19:28:42多线程的应用 前程无忧岗位爬虫 import requests from re import search from multiprocessing import Process, Queue from concurrent.futures import ThreadPoolExecutor from threading import Thread import ... -
批量处理NC数据
2017-06-05 23:24:31NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,是一个多自变量的单值函数。目前很多数据以nc格式存储,这里从gis角度 ,分别使用Arcgis、IDL批量处理。基础了解见...