小编Joh*_*rer的帖子

使用 Python 获取 NetCDF 变量 min/max 的最快方法?

min/max从 NetCDF 文件中提取变量数据值的常用方法与scipy.io.netcdf.

我正在处理相对较大的海洋模型输出文件(来自 ROMS),在给定的地图区域(夏威夷)上具有多个深度级别。当这些在 NetCDF-3 中时,我使用了scipy.io.netcdf.

现在这些文件在 NetCDF-4(“经典”)中,我不能再使用scipy.io.netcdf,而是切换到使用 netCDF4 Python 模块。但是,缓慢是一个问题,我想知道是否有更有效的方法来提取变量的数据范围(最小和最大数据值)?

这是我使用 scipy 的 NetCDF-3 方法:

import scipy.io.netcdf
netcdf = scipy.io.netcdf.netcdf_file(file)
var = netcdf.variables['sea_water_potential_temperature']
min = var.data.min()
max = var.data.max()
Run Code Online (Sandbox Code Playgroud)

这是我使用 netCDF4 的 NetCDF-4 方法:

import netCDF4
netcdf = netCDF4.Dataset(file)
var = netcdf.variables['sea_water_potential_temperature']
var_array = var.data.flatten()
min = var_array.data.min()
max = var_array.data.max()
Run Code Online (Sandbox Code Playgroud)

显着的区别是我必须首先展平 netCDF4 中的数据数组,而这个操作显然会减慢速度。

有没有更好/更快的方法?

python numpy scipy netcdf

5
推荐指数
1
解决办法
4723
查看次数

xarray 波周期(以秒为单位)摄取为 timedelta64

测量海浪周期的变量的“单位”属性以“秒”为单位。这不是日期时间字段,但 xarray 会自动将此变量提取为 timedelta64。由于单位不是“自...以来的秒数”,我认为 xarray 应该将其视为普通的 float32 数据数组,但显然并非如此。有没有办法让我告诉 xarray 将波浪周期变量作为 float32 摄取,或者在摄取后将它们从 timedelta64 转换回原始值?我仍然希望它将“时间”变量转换为 timedelta64,所以我不想关闭整个数据集的翻译,而只是针对特定变量(Tper、sper、wper)。

以下是我在 TDS 服务器中的波浪预测中使用的基本 OPeNDAP URL:

http://oos.soest.hawaii.edu/thredds/dodsC/hioos/model/wav/ww3/hawaii/WaveWatch_III_Hawaii_Regional_Wave_Model_best.ncd

建议?谢谢!

您可以使用此处的 OPeNDAP 页面查看类似“ncdump”的输出:

http://oos.soest.hawaii.edu/thredds/dodsC/hioos/model/wav/ww3/hawaii/WaveWatch_III_Hawaii_Regional_Wave_Model_best.ncd.html

或者您可以在 OPeNDAP URL 上运行 ncdump,如下所示:

ncdump -h http://oos.soest.hawaii.edu/thredds/dodsC/hioos/model/wav/ww3/hawaii/WaveWatch_III_Hawaii_Regional_Wave_Model_best.ncd

结果如下:

netcdf WaveWatch_III_Hawaii_Regional_Wave_Model_best {
dimensions:
        lat = 101 ;
        lon = 141 ;
        time = 54453 ;
        z = 1 ;
variables:
        float lon(lon) ;
                lon:units = "degrees_east" ;
                lon:long_name = "longitude" ;
                lon:standard_name = "longitude" ;
                lon:short_name = "lon" ;
                lon:axis = "x" ;
                lon:_CoordinateAxisType …
Run Code Online (Sandbox Code Playgroud)

python netcdf opendap python-xarray

4
推荐指数
1
解决办法
893
查看次数

标签 统计

netcdf ×2

python ×2

numpy ×1

opendap ×1

python-xarray ×1

scipy ×1