【问题标题】:Extract data from NetCDF4 file with regional mask file使用区域掩码文件从 NetCDF4 文件中提取数据
【发布时间】:2020-08-09 18:11:33
【问题描述】:

我正在处理多个 NetCDF4 文件,并希望从中提取 monthly_rain 值。这是我的代码:

import numpy
import netCDF4

with netCDF4.Dataset('abc.nc', 'r') as mask_dataset:
    mask_data = mask_dataset.variables['mask'][:]

results = []

for year in range(2010, 2019):
    with netCDF4.Dataset('{:d}.monthly_rain.nc'.format(year), 'r') as dataset:
        data = dataset.variables['monthly_rain'][:]
        data.mask = mask_data.mask

        average = numpy.mean(data)

    results.append(average)

print(results)

上面代码的结果是:

[92.82600598372804, 67.01124693612452, 54.30168356893234, 39.58771623758809, 45.30353874205824, 39.017626997972684, 50.94861235658874, 44.55133832249074, 41.7971056907917]

这是我想要的结果。

但是,我想从文件中提取所有 monthly_rain 值,以便对数据集进行进一步检查。有什么方法可以让我这样做吗?

【问题讨论】:

  • 代码中的许多行没有正确缩进。请更正。
  • 很抱歉,现在应该没问题,因为我刚刚修改了它。

标签: python netcdf4


【解决方案1】:

现在我可以回答了……只是不要在循环中计算平均值,而是直接将(屏蔽的)“数据”附加到结果中,然后进行任何额外的后处理。

【讨论】:

  • 但是它没有返回值,我只能得到9个掩码数组列表,结果是这样的: mask=[[[ True, True, True, ..., True,真,真],[真,真,真,...,真,真,真],[真,真,真,...,真,真,真],
  • 你使用 results.append(data) 了吗?
  • 是的,在列表中我得到了 10 个大小为 (12,681,841) 的掩码数组。但我想从中获取属性值。例如,monthly_rain 的值。我该如何处理它?
  • 什么是“属性值”?与您的“数据”不同的东西?请使用 ncinfo 并显示“常规”netCDF4 文件的结构。还有你更正的代码。
猜你喜欢
  • 2019-02-21
  • 2015-01-22
  • 2021-03-23
  • 2021-10-21
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
相关资源
最近更新 更多