转贴自Stack Overflow
netcdf - Drop duplicate times in xarray - Stack Overflow
xarrray读取多维度的.nc文件时,发现会有重复的时间戳,这时候用
import numpy as np
import netCDF4 as nc4
import xarray as xr
# Create example NetCDF files
for t in range(2):
nc = nc4.Dataset('test{}.nc'.format(t), 'w')
dim_t = nc.createDimension('time', None)
var_t = nc.createVariable('time', 'f8', ('time',))
var_s = nc.createVariable('var', 'f8', ('time',))
var_t.setncattr('units', 'hours since 2001-01-01 00:00:00')
var_t[:] = t*5+np.arange(6)
var_s[:] = t*5+np.arange(6)+t
nc.close()
# Read with xarray
f = xr.open_mfdataset(['test0.nc', 'test1.nc'])
array(['2001-01-01T00:00:00.000000000', '2001-01-01T01:00:00.000000000',
'2001-01-01T02:00:00.000000000', '2001-01-01T03:00:00.000000000',
'2001-01-01T04:00:00.000000000', '2001-01-01T05:00:00.000000000',
'2001-01-01T05:00:00.000000000', '2001-01-01T06:00:00.000000000',
'2001-01-01T07:00:00.000000000', '2001-01-01T08:00:00.000000000',
'2001-01-01T09:00:00.000000000', '2001-01-01T10:00:00.000000000'], dtype='datetime64[ns]')
In [7]: _, index = np.unique(f['time'], return_index=True)
In [8]: index
Out[8]: array([ 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11])
In [9]: f.isel(time=index)
Out[9]:
<xarray.Dataset>
Dimensions: (time: 11)
Coordinates:
* time (time) datetime64[ns] 2001-01-01 2001-01-01T01:00:00 ...
Data variables:
var (time) float64 dask.array<shape=(11,), chunksize=(6,)>
xarray
-simlab:用于计算机模型仿真的
xarray
扩展
xarray
-simlab是一个Python库,它提供了用于以模块化方式构建计算模型的通用框架,还提供了用于使用
xarray
的Dataset结构设置和运行仿真的扩展。 它是为快速,交互式和探索性建模而设计的。
xarray
-simlab与PyData生态系统的其他库(例如和 )很好地集成在一起。
下面显示的Conway的“人生游戏”示例改编自Jake VanderPlas的这篇。
通过编写紧凑的Python类来创建新的模型组件,即非常类似于 :
import numpy as np
import xsimlab as xs
@ xs . process
class GameOfLife :
world = xs . variable (
dims = ( 'x' , 'y' ), in
使用python 3.7安装有效的conda安装(请参阅)。 如果已经安装了conda,请确保已安装conda v4.8.4 +。 如果不是,请使用conda update conda从旧版本进行conda update conda 。
如果要将xb与DeepSS一起使用,请按照DeepSS的。 还包含有关使用GUI注释音频记录的说明。
图形用户界面
与GUI一起使用:
conda env create -f https://raw.githubusercontent.com/janclemenslab/
xarray
-behave/master/env/xb_gui.yml -n xb
可以通过激活新环境conda activate xb ,然后在终端
中
键入xb来启动GUI。 有关用法/参数/键,请参见xb --help 。 GUI使用记录。
非图形用户界面
如果您不想使
StackSTAC
将项目列表转换为4D DataArray(: time, band, y, x ),包括重新投影到公共网格。 该数组是一个懒惰的,因此可以在本地或并行加载和处理数据,而只需调用 compute() 。
有关更多信息和示例,请。
import stackstac
import satsearch
stac_items = satsearch . Search (
url = "https://earth-search.aws.element84.com/v0" ,
intersects = dict ( type = "Point" , coordinates = [ - 105.78 , 35.79 ]),
collections = [ "sentinel-s2-l2a-cogs" ],
datetime = "2020-04-
xr_data为输入的
xarray
数组,year为输入年份,如 1979 或 1980 等等,返回
xarray
数组
主要调用了pandas进行处理
def delet_a_var(xr_data,year):
#删除选
中
年的
时间
并返回
xarray
对象
xr_return_data=xr_data.sel(time=(xr_data['time.year']==year)).to_dataframe().reset_index().drop('time',axis=1).se
1、读取grib2
ds = xr.open_dataset('xxx.grib2', engine='cfgrib', backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa'}})
isobaricInhPa 气压坐标系、垂直坐标系,一般是多层高空数据
surface是地面数据
读取会生成.idx文件,读取报错时记得删除.idx文件
xarray
的实现在./lib/
xarray
.c
中
xarray
的解释如下:
The
XArray
is an abstract data type which behaves like a very large array
of pointers. It meets many of the same needs as a hash or a conventional
resizable a...
待办事项:添加更多内容
TensorDB诞生于处理并存储多个
时间
序列矩阵的必要性,这些
时间
序列矩阵之间存在某种关系(通常是一些数学公式),并且每天都需要进行一组转换,因此考虑到这一问题,我决定创建一个支持DB和DBMS的数据库。使用一组预定义的方法或公式以及相同的
Xarray
语法创建N维数组(张量)。
为什么要使用TensorDB
张量的定义是高度个性化和简单的。
使用
Xarray
来读取张量,这是一个非常受支持的库(语法几乎等于pandas)。
由于使用Zarr(将来会有更多格式),因此可以实现快速读写。
使用最常用的云存储系统S3之一的简单高效的备份系统(将来会更多)
从公式创建新张量很简单。
我期待使用自定义绘图功能。 在本月晚些时候给大家。
drpy.core.GPMDPR():
此类旨在从NASA的全球降水测量任务双频降水雷达(GPM-DPR)
中
读取hdf5文件到
xarray
数据集
中
。
drpy.core.APR():
此类旨在用于从NASA的机载降水雷达(主要在OLYMPEX
中
开发)
中
读取hdf5文件,因此,如果您使用其他活动时要当心,则某些数据集名称可能会有所不同。
创建此程序包的原因不是重新发明轮子(即h5py可以正常工作),而是允许用户访问
xarray
中
的有用功能。
具体来说,当前支持的数据文件是2级DPR文件(2A.DPR *)。 拥有帐户后,您可以从这里免费下载它们:ftp://arthurhou.pps.eosdis.nasa.gov
dataset = xr . open_dataset (
"tiledb_array_uri" ,
backend_kwargs = { "key" : key , "timestamp" : timestamp },
engine = "tiledb"
图块数据库
TileDB-
xarray
需要当前的
xarray
开发分支。 要安装TileDB-
xarray
,请克隆此存储库,然后从克隆的存储库内部运行以下命令:
pip install .
要启用带有
xarray
的Dask并使用'parallel'附加功能:
pip install ' .[parallel] '
Dimensions: (time: 365, lat: 180, lon: 360)
Coordinates:
* lon (lon) float32 0.0 1.0 2.0 3.0 ... 356.0 357.0 358.0 359.0
* lat (lat) float32 -89.0 -88.0 -87.0 -86.0 ... 86.0 87.0 88.0 89.0
* time (time) datetime64[ns] 2019-01-01 2019-01-02 ... 2019-12-31
Data variables:
data_var (time, lat, lon) float32 ...
在
xarray
中
,可以通过 `sel()` 函数选择数据集的子集,包括选择
时间
范围。例如,选择 2019 年 1 月 1 日至 2019 年 1 月 31 日的数据:
```python
subset = ds.sel(time=slice('2019-01-01', '2019-01-31'))
其
中
,`slice()` 函数用于指定
时间
范围,`time` 表示选择的是
时间
维度。`subset` 就是选择后的子集,可以进行后续的数据分析和处理。