- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对xarray中的时间变量有误解。我有一个 netcdf4 文件,时间作为无限维度和变量(例如坐标变量)定义如下:
double time(time=59231);
:_Netcdf4Dimid = 0; // int
:units = "seconds since 2015-11-12 16:1:48.500000 0:00";
文件中还存储了EPIC约定时间(因为我还在约定之间来回测试代码)
int EPIC_time(time=59231);
:units = "True Julian Day";
:epic_code = 624; // int
:datum = "Time (UTC) in True Julian Days: 2440000 = 0000 h on May 23, 1968";
:NOTE = "Decimal Julian day [days] = time [days] + ( time2 [msec] / 86400000 [msec/day] )";
:_Netcdf4Dimid = 0; // int
:serial_number = "23881";
:sensor_type = "TRDI";
:sensor_depth = 10.367607116699219; // double
:initial_sensor_height = 1; // int
:initial_sensor_height_note = "height in meters above bottom: accurate for tripod mounted instruments";
:height_depth_units = "m";
:_FillValue = -1; // int
:_Unsigned = "true";
还有一个带有仪表标题的变量:
float Hdg_1215(time=59231, lat=1, lon=1);
:_FillValue = 1.0E35f; // float
:units = "degrees";
:name = "Hdg";
要打开文件并使用它,我会这样做:
import xarray as xr
import numpy as np
import datetime as dt
vars2omit = {'EPIC_time','EPIC_time2'}
ds = xr.open_dataset(infile,decode_times=True,drop_variables=vars2omit)
我可以对数据进行绘图和处理。但是有两个非常奇怪的行为,对它们的解释将帮助我理解 xarray 的内部工作原理。
文件打开后,尝试访问时间变量(坐标时间变量)的单位属性失败。为什么?该属性在文件中。
print(ds['Hdg_1215'].attrs['units']) # this works
print(ds['time'].attrs['units']) # this fails, KeyError: 'units'
最佳答案
xarray
自动将它理解的时间变量解码为坐标变量 datetime64
对象,因此使用 units
是不合适的。
如果您告诉它 decode_times=False
,它不会创建 datetime64
对象,而是为您留下一个简单的数字数组,units
需要解释这些值。
举个例子:
import xarray as xr
url ='http://geoport.whoi.edu/thredds/dodsC/usgs/data2/emontgomery/stellwagen/CF-1.6/ARGO_MERCHANT/1211P-A.cdf'
xr.open_dataset(url)
产生:
<xarray.Dataset>
Dimensions: (time: 10748)
Coordinates:
latitude float32 ...
longitude float32 ...
* time (time) datetime64[ns] 1977-01-08T11:33:44 ...
z float64 ...
Data variables:
feature_type_instance |S64 ...
crs int32 ...
...
同时
xr.open_dataset(url, decode_times=False)
产生:
<xarray.Dataset>
Dimensions: (time: 10748)
Coordinates:
latitude float32 ...
longitude float32 ...
* time (time) float64 2.216e+08 2.216e+08 2.216e+08 ...
z float64 ...
Data variables:
feature_type_instance |S64 ...
crs int32 ...
关于python xarray 丢失时间变量的单位属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485745/
假设我有以下二维数组 >>> import numpy as np >>> budgets = np.array([ [np.nan, 450.], [500. , 10
我正在尝试读取单个 WRF 的时间序列输出变量。时间序列是分布式的,每个文件一个时间戳,跨越 5000 多个 netCDF 文件。每个文件包含大约 200 个变量。 有没有办法只为我感兴趣的变量调用
我有一个相当大的 xr.Dataset,其中包含大约 20 个数据变量。我只对保留其中两个感兴趣。我看到 xr.Dataset.drop带有数据集的删除变量。 我正在寻找保留变量的语法。我尝试了 f[
我正在尝试计算 xarray 数据集中时间维度子集的每月气候。时间是使用 datetime64 定义的。 如果我想使用整个时间序列,这很好用: monthly_avr=ds_clm.groupby('
我有一个空间数据的 pandas 数据框,我想将其转换为 netCDF。我找到了 xarray 并将我的数据帧转换为 xarray 数据集的方法: # create xray Dataset from
我有一个名为 rio 的 DataArray 对象。 In [59]: rio Out[59]: array([[[0, 0, ..., 0, 0], [0, 0, ..., 0,
我目前正在尝试将一个大的多维数组 (>5 GB) 加载到 python 脚本中。由于我将数组用作机器学习模型的训练数据,因此以小批量高效加载数据非常重要,但要避免将整个数据集加载到内存中一次。 我的想
假设我有一个 dataset类型 xarray.Dataset .我有一个名为 name 的维度,(由 DataArray 中的所有 Dataset 共享,但我认为这对这个问题并不重要,)我想选择一个
我想读入 https://hrrrzarr.s3.amazonaws.com/index.html#sfc/20210208/20210208_00z_anl.zarr/ 的远程 zarr 存储。 z
我想获取栅格(卫星图像)数据,并构建一个Dataset 或DataArray,以加快我的图像处理速度(我必须处理多-波段,多日期卫星图像很多)。 数据来自每个图像日期的单独波段,我了解如何将每个波段日
所以我有 3 个 netcdf4 文件(每个大约 90 MB),我想使用包 xarray 将它们连接起来。每个文件都有一个变量 (dis),以 0.5 度分辨率(纬度、经度)表示 365 天(时间)。
对于我的数据数组,我有坐标经度、纬度和时间。我只想沿纬度反转数组,以便 [90, 85, ..., -85, -90]变成 [-90, -80, ..., 85, 90] . 最佳答案 同意@jham
完成 MetPy 横截面示例后,我尝试将该示例推广到 NCEP NAM-12km GRIB2 文件,但未成功。通过将我的文件的 DataArray 与示例文件(netCDF 文件)进行比较,我发现 x
我正在使用 xarray.apply_ufunc() 将函数应用于 xarray.DataArray .它适用于某些 NetCDF,但在尺寸、坐标等方面似乎具有可比性的其他 NetCDF 会失败。但是
是否也可以创建一个核外 DataArray,并使用 xarray 将其逐块写入 NetCDF4 文件? 例如,当维度更大时,我希望能够以核外方式执行此操作,因此我无法将整个数组存储在内存中: num_
我有一个数据数组arr,坐标为“时间”。到达: array([244.40161, 244.39998, ..., 244.40936, 244.40549], dtype=float32)
我有一个数据数组arr,坐标为“时间”。到达: array([244.40161, 244.39998, ..., 244.40936, 244.40549], dtype=float32)
我是新手,我使用的是XARRAY。我的netcdf文件包含时间为‘天数自0001-01-01 00:00:00’的数据,日历类型为Julian。有谁知道将时间转换成标准日历的简单方法吗?。提前感谢:)
我是新手,我使用的是XARRAY。我的netcdf文件包含时间为‘天数自0001-01-01 00:00:00’的数据,日历类型为Julian。有谁知道将时间转换成标准日历的简单方法吗?。提前感谢:)
我是新手,我使用的是XARRAY。我的netcdf文件包含时间为‘天数自0001-01-01 00:00:00’的数据,日历类型为Julian。有谁知道将时间转换成标准日历的简单方法吗?。提前感谢:)
我是一名优秀的程序员,十分优秀!