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