Jam*_*ams 5 python pandas python-xarray tensorflow
我使用 Xarray 数据集来包含要输入 TensorFlow DNN 的数据,当我调用该train()函数时,我最终收到此错误:
TypeError: Cannot convert value dtype('<M8[ns]') to a TensorFlow DType.
Run Code Online (Sandbox Code Playgroud)
我的假设是,这是因为数据集的时间维度/坐标变量的 dtypedatetime64[ns]映射到<M8[ns]dtype:
In [1]: np.dtype('datetime64[ns]') == np.dtype('<M8[ns]')
Out[1]: True
Run Code Online (Sandbox Code Playgroud)
我想修改数据集,以便time维度/坐标变量具有整数类型,这可能更适合 TensorFlow。
过去,我总是使用整数类型作为时间变量以及“自 2000-01-01 00:00:00 以来的天数”等单位。在这种情况下,如果使用整数数据类型,则单位需要以分钟或秒为单位,因为时间步长以 30 分钟为增量。
关于我当前时间变量的一些信息:
In [2]: ds['time'].coords['time']
Out[2]: <xarray.DataArray 'time' (time: 720)>
array(['2000-12-27T00:00:00.000000000', '2000-12-27T00:30:00.000000000',
'2000-12-27T00:59:59.000000000', ..., '2001-01-10T22:30:00.000000000',
'2001-01-10T23:00:00.000000000', '2001-01-10T23:29:59.000000000'],
dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2000-12-27 2000-12-27T00:30:00 ...
Attributes:
long_name: time
bounds: time_bnds
In [3]: ds['time'].encoding
Out[3]: {'calendar': 'noleap',
'dtype': dtype('float64'),
'original_shape': (720,),
'source': '/content/fv091x180L26_dry_HS.cam.h0.2000-12-27-00000.nc',
'units': 'days since 2000-12-27 00:00:00'}
Run Code Online (Sandbox Code Playgroud)
是否有一个通常用于此类转换的函数,或者我只是使用 timedeltas 等来滚动自己的函数?当从 NetCDF 读取时,我可以以某种方式请求 xarray 将时间变量转换为更普通的东西吗?xarray.open_dataset()和decode_times=False?
| 归档时间: |
|
| 查看次数: |
4270 次 |
| 最近记录: |