精华内容
下载资源
问答
  • python中基于xarray处理netcdf文件时,使用dask加速处理速度 在处理高分辨率气象文件netcdf格式文件时,常规的处理速度太慢!!数据量过大,造成卡死,真是上头!!!先不要想着新装内存,虽然我差点京东下单! 话不...

    python中基于xarray处理netcdf文件时,使用dask加速处理速度

    在处理高分辨率气象文件netcdf格式文件时,常规的处理速度太慢!!数据量过大,造成卡死,真是上头!!!先不要想着新装内存,虽然我差点京东下单!

    话不多说

    首先需要先安装好dask包!!!
    1、以日数据气温数据netcdf文件为例。
    在这里插入图片描述

    图中是两个打开方式,其中air是气温变量。
    data_dask是使用dask,chunks则是以经纬度10度为间隔划分块。进而分块处理。
    data_nodask常规打开方法。
    2、以按年平均举例,查看两者速度!
    在这里插入图片描述
    可以看到,文件按照chunks字典被划分为1550个chunks。求年均耗时68.8ms!
    若要加载dask存储为正常的xarray时,使用load或values方法读取。
    在这里插入图片描述
    不使用dask的情况:
    在这里插入图片描述

    这是一个例子,我认为可以做到抛砖引玉的作用!!!最近处理数据,常常遭遇卡死,先做一记录!后面有新发展继续更新!希望大家提提意见建议!

    展开全文
  • 将来,您可以通过使用cftime对象创建日期轴来实现此目的,但是当前有一个outstanding issue in xarray,它不允许您编写包含此类对象的netCDF文件.但是,即使您可以保存此类对象,最简单,最干净的方法仍然是将该轴手动定义...

    将来,您可以通过使用cftime对象创建日期轴来实现此目的,但是当前有一个

    outstanding issue in xarray,它不允许您编写包含此类对象的netCDF文件.

    但是,即使您可以保存此类对象,最简单,最干净的方法仍然是将该轴手动定义为具有某些单位的整数数组.

    import numpy as np

    import xarray as xr

    days = np.asarray(range(100*365))

    ds = xr.Dataset(

    {'time': (['time'], days, {'units': 'days since 2200-01-01 0:0:0'})}

    )

    print(ds['time'][-1]

    ds.to_netcdf('test.nc')

    ds = xr.open_dataset('test.nc')

    print(ds['time'][-1])

    给出输出

    array(36499)

    Coordinates:

    time int64 36499

    Attributes:

    units: days since 2200-01-01 0:0:0

    其次是

    array(datetime.datetime(2299, 12, 7, 0, 0), dtype=object)

    Coordinates:

    time object 2299-12-07

    请注意,当您重新打开数据集时,xarray会自动对其进行解码.

    您使用的“单位”属性应遵循CF conventions的时间坐标.您可以根据需要将“天”替换为“小时”,“分钟”或“秒”.

    这确实需要您手动计算所需的整数,如果您的时间轴以年为单位,这主要是困难的(因为“年”不是定义的时间度量单位,长度根据闰年而变化).如果是这种情况,您可以使用以下内容:

    import cftime

    # replace this to use a different calendar

    Datetime = cftime.DatetimeProlepticGregorian

    # make your list of Datetime objects

    time_list = []

    month = day = 1

    hour = minute = second = 0

    for year in range(2200, 2300, 1):

    time_list.append(Datetime(year, month, day, hour, minute, second))

    # this will convert them into a time axis, here in units of

    # 'days since 2200-01-01 0:0:0'

    seconds_in_day = 60*60*24

    day_list = []

    for dt in time_list:

    time_since_2200 = dt - Datetime(2200, month, day, hour, minute, second)

    day_list.append(int(time_since_2200.total_seconds() / seconds_in_day))

    您可以使用不同的cftime类(例如cftime.DatetimeJulian或cftime.DatetimeNoLeap)来使用其他日历.应修改此代码以提供正确的time_list供您使用.您还可以在其他某个时间单位中将seconds_in_day切换为秒(并且还将该单位提供给xr.Dataset调用).

    展开全文
  • 我知道如何将netCDF4.Dataset手动转换为xarray DataArray.但是,我想知道是否有任何简单而优雅的方法,例如使用xarray后端,将以下“ netCDF4.Dataset”对象简单转换为xarray DataArray对象:root group (NETCDF4 data ...

    我知道如何将netCDF4.Dataset手动转换为xarray DataArray.但是,我想知道是否有任何简单而优雅的方法,例如使用xarray后端,将以下“ netCDF4.Dataset”对象简单转换为xarray DataArray对象:

    root group (NETCDF4 data model, file format HDF5):

    Originating_or_generating_Center: US National Weather Service, National Centres for Environmental Prediction (NCEP)

    Originating_or_generating_Subcenter: NCEP Ensemble Products

    GRIB_table_version: 2,1

    Type_of_generating_process: Ensemble forecast

    Analysis_or_forecast_generating_process_identifier_defined_by_originating_centre: Global Ensemble Forecast System (GEFS)

    Conventions: CF-1.6

    history: Read using CDM IOSP GribCollection v3

    featureType: GRID

    History: Translated to CF-1.0 Conventions by Netcdf-Java CDM (CFGridWriter2)

    Original Dataset = /data/ldm/pub/native/grid/NCEP/GEFS/Global_1p0deg_Ensemble/member/GEFS_Global_1p0deg_Ensemble_20170926_0600.grib2.ncx3#LatLon_181X360-p5S-180p0E; Translation Date = 2017-09-26T17:50:23.259Z

    geospatial_lat_min: 0.0

    geospatial_lat_max: 90.0

    geospatial_lon_min: 0.0

    geospatial_lon_max: 359.0

    dimensions(sizes): time2(2), ens(21), isobaric1(12), lat(91), lon(360)

    variables(dimensions): float32 u-component_of_wind_isobaric_ens(time2,ens,isobaric1,lat,lon), float64 time2(time2), int32 ens(ens), float32 isobaric1(isobaric1), float32 lat(lat), float32 lon(lon), float32 v-component_of_wind_isobaric_ens(time2,ens,isobaric1,lat,lon)

    groups:

    我已经使用siphon.ncss了.

    展开全文
  • 是的,xarray支持核外数组并以块的形式写入 . 您需要使用xarray操作和Dask数组而不是NumPy数组来编写计算 . xarray docs在这里应该会有所帮助 .Update :对于这样的模拟,您需要使用dask.delayed计算每个函数 f . ...

    是的,xarray支持核外数组并以块的形式写入 . 您需要使用xarray操作和Dask数组而不是NumPy数组来编写计算 . xarray docs在这里应该会有所帮助 .

    Update :对于这样的模拟,您需要使用dask.delayed计算每个函数 f . 然后你可以用 dask.array.from_delayed 转换dask数组中的结果,将它们包装回 xarray.DataArray 并用 to_netcdf() 将数据直接写入磁盘 . 结果以流式方式进行,并行计算 f() 和 g() 并且不超过几个时间步加载到内存中:

    import dask

    import dask.array as da

    import numpy as np

    import xarray

    def f(x):

    return 1.1 * x

    def g(x):

    return 0.9 * x

    num_steps = 1000

    num_times = int(1e6)

    u = np.ones(num_times)

    s = np.ones(num_times)

    arrays = []

    for i in range(num_steps):

    u = dask.delayed(f)(u)

    s = dask.delayed(g)(s)

    product = da.from_delayed(u * s, shape=(num_times,), dtype=float)

    arrays.append(product)

    stacked = da.stack(arrays)

    data_array = xarray.DataArray(stacked, dims=['step', 'time'])

    %time data_array.to_netcdf('results.nc')

    # CPU times: user 7.44 s, sys: 13.5 s, total: 20.9 s

    # Wall time: 29.4 s

    您会注意到xarray非常适合这种计算:大部分计算都是使用dask / numpy完成的 . 您也可以使用xarray对象轻松完成此操作,但我们没有方便的方法通过dask延迟对象传递带标签的数组元数据,因此无论哪种方式,您都需要在另一侧重建元数据 .

    你可以争辩说,在这里使用dask是过度的,你可能是对的 . 即使您想使用dask进行并行化,您仍然可能希望在每个步骤之后以有效的netCDF文件的形式检查模拟 .

    因此,在每次迭代时扩展netCDF文件的简单循环可能是您想要的 . 这是xarray的not yet supported,但这将是一个很好的功能 . 应该可以使用以下界面:

    for i in range(num_steps):

    u[:] = f(u)

    s[:] = g(s)

    d[:] = u[:] * s[:]

    d.to_netcdf('results.nc', extend='step')

    在此期间,您可以为每个步骤编写单独的文件,例如,

    for i in range(num_steps):

    u[:] = f(u)

    s[:] = g(s)

    d[:] = u[:] * s[:]

    d.to_netcdf('results-%04d.nc' % i)

    然后,您可以将所有数据加载到一起,然后使用 open_mfdataset 将其合并到一个文件中,例如,

    combined = xarray.open_mfdataset('results-*.nc', autoclose=True)

    combined.to_netcdf('results-combined.nc')

    展开全文
  • 所以我有3个netcdf4文件(每个约90 MB),我想使用包xarray连接.每个文件有一个变量(dis),以0.5度分辨率(lat,lon)表示365天(时间).我的目标是连接三个文件,使得我们的时间序列为1095天(3年).每个文件(2007年,2008年,...
  • netcdf是气候数据中的主流格式,当涉及到大范围的全球数万个格网点数据时,使用python脚本可以较快地读取与处理。 import netCDF4 from netCDF4 import Dataset import numpy as np import sys import os #计算日期...
  • Python3.netCDF4中文路径

    2021-05-07 16:17:38
    一劳永逸地解决了xarraynetcdf4无法读取路径中含有中文的netCDF4文件的问题
  • 我正在尝试学习使用Python进行科学分析(特别是大型NETCDF文件),并在我的MacBookPro OSX10.10上安装了Anaconda。我正在尝试使用Spyder IDE接口,但由于使netCDF4程序包正常工作的错误而停滞不前。我需要使用我安装的...
  • I've created a xarray.DataArray and I save it using xarray.DataArray.to_netcdf.I create it using:datatmp = np.full([nens, len(modanom.coords['time'].values), len(modanom.coords['latitude'].values), le...
  • xarray概述

    千次阅读 多人点赞 2020-02-05 17:15:57
    xarray概述创建DataArray索引(Indexing)属性(Attributes)计算(Computation)GroupBy分割(Split)Binning 以下是可以使用xarray.DataArray对象的事例。更多详细信息可以参阅剩余其他文档。 首先,导入 numpy, pandas and...
  • 本文原创链接:...import numpy as np import xarray as xr import cartopy.crs as ccrs import cartopy.feature as cfeat from cartopy.mpl.gridliner import LONGITUDE_...
  • Python中如何安装xarray读取.nc文件

    千次阅读 2021-07-05 00:35:02
    此时直接打开.nc文件可能会报错误,如果错误显示与IO有关,那么必须手动安装scipy和netCDF4,这两个库是用于支持xarray输出的库,如果不添加,就无法输出.nc文件。 第二步: 在命令行中输入以下代码安装scipy: ...
  • python xarray 简单介绍

    2021-09-06 09:33:31
    文章目录**xarray介绍****xr.Dataset:**1、官方例子:2、同一维度上多个变量的坐标参数:xr.DataArray:1、有多个维度时(以3维为例)2、只有一个维度时**xarray--数据的读写**利用xarray读取NetCDF数据:读取nc文件...
  • xarray:Python中带有ND标签的数组和数据集
  • Overview: Why xarray?Features特点Adding dimensions names and coordinate indexes to numpy’s ndarray makes many powerful array operations possible: 将变量名称和坐标索引加入到numpy的n维数组,可完成多种...
  • Xarray官方提供了三种方法用来索引数据:1.利用下标索引(index)2.利用坐标值索引(coords)3.利用标签索引(labels)我对官方的表格实例做了修改,更符合我们气象专业的理解。da指DataArray;ds指Dataset虽然说给出了多种...
  • Windows下xarray+cfgrib读取grib文件

    千次阅读 热门讨论 2020-09-17 11:23:45
    在Windows下读取grib文件,...本博客学习使用xarray和cgrib读取及转化grib数据。 一、气象数据常用格式 常用的数据格式包括普通的二进制格式、文本数据、NetCDF、HDF4/5以及GRIB1/2数据。这里简单介绍一下NetCDF和GRIB1
  • 它特别适用于处理作为 xarray 数据模型来源的 netCDF 文件,并与 dask 紧密集成以进行并行计算。 为什么是xarray? 多维(又名 N 维,ND)数组(有时称为“张量”)是计算科学的重要组成部分。 它们在广泛的领域...
  • xarray官方文档 学习笔记(序章)

    千次阅读 2018-06-24 15:16:26
    个人需要开了这个坑不定时更新希望能和大家共同学习和交流……xarray
  • 最近一直有人在问netCDF数据转为GeoTIFF。其实思路是一样的,都是先构造一个VRT文件,然后使用该VRT文件进行转换。多余的这里就不再介绍,详细的说明可以参考:Python+GDAL将GOCI数据转为GeoTIFF。 这里只列VRT的...
  • cfgrib:一个Python界面,可使用ecCodes遵循CF约定将GRIB文件映射到NetCDF通用数据模型 遵循Python接口,将GRIB文件映射到 。 高级API旨在支持的GRIB引擎,其灵感来自和 。 低级访问和解码通过和。 具有开发状态...
  • 使用xarray和dask在Amazon S3(us-west-2区域)上公开提供的分析示例。 使用Pangeo Binder重新创建笔记本 在Pangeo Binder上尝试使用这些笔记本。 请注意,该会话是短暂的。 您的主目录不会持久存在,因此,如果您...
  • xarray数据结构之Dataset

    千次阅读 多人点赞 2020-02-07 22:41:19
    xarray数据结构之DataArray xarray.Dataset is xarray’s multi-dimensional equivalent of a DataFrame. It is a dict-like container of labeled arrays (DataArray objects) with aligned dimensions. It is ...
  • We use netCDF4-python internally in xarray, and have contributed a number of improvements and fixes upstream. xarray does not yet support all of netCDF4-python’s features, such as modifying files on...
  • 使用xarray的Python程序,用于计算欧洲地中海地区的空气停滞指数了解详细信息 欢迎使用ASI_Steady Wiki! 该项目是网站的代码 统一语言 图表 资料下载 1个 2个 类图 Las tres funciones负责人,负责人,符合1条...
  • 在自己的电脑上处理长时间高分辨率的空间栅格数据时,经常因为数据量过大而导致代码难以...在使用python的xarray包处理分析数据时,可以利用dask包对较大的数据进行分块并行计算。 xarray中关于dask并行运算的介绍 ...
  • of_wind_height, List[][]> u_component_of_wind_gust ,List[][]> v_component_of_wind ,List[][]> v_component_of_wind_gust){ //创建netcdf3写入文件对象 NetcdfFileWriter fileWriter; try { fileWriter = ...
  • 因为想做笔记,所以直接做的很粗糙...import xarray as xr import matplotlib.pyplot as plt import matplotlib as mpl fig, ax = plt.subplots(figsize=(6, 1)) fig.subplots_adjust(bottom=0.5) cmap = mpl.cm.c
  • /usr/local/lib/python3.5/dist-packages/xarray/backends/netCDF4_.py in _open_netcdf4_group(filename, lock, mode, group, **kwargs) 242 import netCDF4 as nc4 243 --> 244 ds = nc4.Dataset...
  • I have a very large netCDF file that I am reading using netCDF4 in pythonI cannot read this file all at once since its dimensions (1200 x 720 x 1440) are too big for the entire file to be in memory at...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 214
精华内容 85
关键字:

netcdfxarray

友情链接: 84-15W4K-6路PWM.zip