更改 netcdf4 数据类型
Change netcdf4 data type
我有一个 netCDF4 数据文件,其中时间变量存储为浮点数 (netCDF: 'f8', numpy: float64)
,我需要将其更改为 32 位整数 (netCDF: 'i4', numpy: int32)
。我已尝试在 python
中进行更改
tds.variables['time'][:] = np.int32(tds.variables['time'][:])
但这没有用。进行此更改的最佳方法是什么?
因为你用 nco
标记了问题,我假设 nco
的解决方案也是可以接受的。这可以用 ncap2
来完成(例如我使用的 NetCDF 文件躺在附近):
ncdump -h drycblles.default.0000000.nc`:
给出:
netcdf drycblles.default.0000000 {
dimensions:
z = 128 ;
zh = 129 ;
t = UNLIMITED ; // (37 currently)
variables:
double t(t) ;
t:units = "s" ;
t:long_name = "Time" ;
.....
相同转储(修改后的文件):
ncap2 -s 't=int(t)' drycblles.default.0000000.nc drycblles.default.0000000_2.nc
给出:
int t(t) ;
t:long_name = "Time" ;
t:units = "s" ;
您在 Python 中尝试的操作将不起作用,因为您将变量 time
的 data 转换为 int
,但是仍将其存储为 float
(您不更改 NetCDF 文件中的变量类型)。我没有看到任何更改数据类型的选项,我想你可以将变量 time
复制到另一个名称,创建一个类型为 int
的新变量 time
,复制数据,并删除旧的 time
变量。
我有一个 netCDF4 数据文件,其中时间变量存储为浮点数 (netCDF: 'f8', numpy: float64)
,我需要将其更改为 32 位整数 (netCDF: 'i4', numpy: int32)
。我已尝试在 python
tds.variables['time'][:] = np.int32(tds.variables['time'][:])
但这没有用。进行此更改的最佳方法是什么?
因为你用 nco
标记了问题,我假设 nco
的解决方案也是可以接受的。这可以用 ncap2
来完成(例如我使用的 NetCDF 文件躺在附近):
ncdump -h drycblles.default.0000000.nc`:
给出:
netcdf drycblles.default.0000000 {
dimensions:
z = 128 ;
zh = 129 ;
t = UNLIMITED ; // (37 currently)
variables:
double t(t) ;
t:units = "s" ;
t:long_name = "Time" ;
.....
相同转储(修改后的文件):
ncap2 -s 't=int(t)' drycblles.default.0000000.nc drycblles.default.0000000_2.nc
给出:
int t(t) ;
t:long_name = "Time" ;
t:units = "s" ;
您在 Python 中尝试的操作将不起作用,因为您将变量 time
的 data 转换为 int
,但是仍将其存储为 float
(您不更改 NetCDF 文件中的变量类型)。我没有看到任何更改数据类型的选项,我想你可以将变量 time
复制到另一个名称,创建一个类型为 int
的新变量 time
,复制数据,并删除旧的 time
变量。