【问题标题】:Change netcdf4 data type更改 netcdf4 数据类型
【发布时间】:2018-09-24 20:50:55
【问题描述】:

我有一个 netCDF4 数据文件,其中时间变量存储为浮点数 (netCDF: 'f8', numpy: float64),我需要将其更改为 32 位整数 (netCDF: 'i4', numpy: int32)。我已经尝试在 python 中进行更改

tds.variables['time'][:] = np.int32(tds.variables['time'][:])

但这没有奏效。进行此更改的最佳方法是什么?

【问题讨论】:

标签: netcdf netcdf4 nco


【解决方案1】:

由于您使用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数据 转换为 int,但仍将其存储为 float(您不更改 NetCDF 文件中的变量类型)。我没有看到任何更改数据类型的选项,我想您可以将变量 time 复制到另一个名称,创建一个类型为 int 的新变量 time,复制数据,然后删除旧的time 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2012-03-19
    • 2017-04-08
    • 2017-09-13
    • 1970-01-01
    相关资源
    最近更新 更多