python-3.x - 获取多维 xarray.DataArray 的 n 个最小值

标签 python-3.x multidimensional-array netcdf python-xarray

我目前正在处理我拥有的一些天气数据作为 netcdf 文件,我可以使用 pythons xarray 库轻松读取这些数据
我现在想获取具有 3 个维度(经度、纬度和时间)的 DataArray 的 n 个最小值
当我有一个 DataArray dr 时,我可以只做 dr.min(),也许指定一个轴然后我得到最小值,但是当我还想得到第二小的甚至一个可变的量时最小的值,它似乎不那么简单 我目前做的是:

with xr.open_dataset(path) as ds:
    dr = ds[selection]
    dr = dr.values.reshape(dr.values.size)
    dr.sort()
    n_smallest = dr[0:n]

与我必须输入最小值的简单 .min() 相比,这对我来说似乎有点复杂
我实际上想让时间达到我为最小值所做的相应最小值:

dr.where(dr[selection] == dr[selection].min(), drop=True)[time].values

那么有没有更好的方法来获取n个最小值呢?或者甚至是获取 n 个最小值的时间的简单方法?
也许有办法将 3D DataArray 沿经度和纬度轴减小到各自的最小值?

最佳答案

我刚刚发现确实有一个 reduce DataArray 的函数允许我减少经度和纬度,因为我不减少时间维度,我可以只使用 sortby函数并获取具有每天各自时间的最小值的 DataArray:

with xr.open_dataset(path) as ds:
    dr = ds[selection]
    dr = dr.reduce(np.min,dim=[longitude,latitude])
    dr.sortby(dr)

这显然不比我原来的代码短,但完全满足我的要求

关于python-3.x - 获取多维 xarray.DataArray 的 n 个最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56452064/

相关文章:

python - 在 Python 中的列表理解中的两个列表之间进行 bool 检查的快速方法?

python - 如何在 python 中使用循环进行正确的转换?

c - 为什么我的二维数组打印出错误的值?

R 从 .CSV 创建 NetCDF

python - Plotly:如何调整 slider 和更新菜单的位置以为 x 轴刻度线腾出空间?

python - 如何使用 pyautogui 增加每秒的点击次数?

java - 如何将二维数组转换为一维数组?

php - 从不同的值创建单个数组

python - 使用 scipy 从 nc 文件中提取数据

c - Visual Studio - 添加 netCDF 库