小编Adr*_*ins的帖子

如何使用R中的纬度/经度边界从netCDF文件中获取子集

我有一个netCDF文件,我想从纬度/经度边界定义一个子集(即一个纬度/经度定义的框),使用R中的'ncdf'包.

我的netCDF文件摘要如下.它有两个维度(纬度和经度)和1个变量(10U_GDS4_SFC).它本质上是一个包含风值的纬度/长度网格:

[1] "file example.nc has 2 dimensions:"
[1] "lat_0   Size: 1280"
[1] "lon_1   Size: 2560"
[1] "------------------------"
[1] "file example.nc has 1 variables:"
[1] "float 10U_GDS4_SFC[lon_1,lat_0]  Longname:10 metre U wind component Missval:1e+30"
Run Code Online (Sandbox Code Playgroud)

纬度变量从+90到-90运行,经度变量从0到360运行.

我希望使用以下地理边界边界提取整个网格的子集:

左下角:Lat:34.5˚,长:355˚,左上角:Lat:44.5˚,长:355˚,右上角:Lat:44.5˚,长:12˚,右下角:Lat:34.5˚ ,长:12˚

我知道可以使用get.var.ncdf()命令提取变量的一部分(下面的例子):

z1 = get.var.ncdf(example.nc, "10U_GDS4_SFC", start=c(11,26), count=c(5,5))
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何合并纬度/经度,以便最终得到包含变量值的子集空间网格.我不熟悉使用R中的netCDF值,我们将非常感谢您的建议.非常感谢!

r subset latitude-longitude netcdf cdo-climate

10
推荐指数
2
解决办法
1万
查看次数

使用轮廓设置颜色条范围

这似乎是这个问题的重复:

在 matplotlib 中设置颜色条范围

基本上我想设置颜色条范围来设置限制,例如 0 到 2。当我使用 vmin 和 vmax 时,contourf 中的颜色范围设置正确,但颜色条只显示裁剪范围,即链接中的解决方案没有使用contourf 时似乎有效。我错过了一些明显的东西吗?

import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
img=plt.contourf(fld,20,cmap='coolwarm',vmin=0,vmax=2)
plt.colorbar(img)
Run Code Online (Sandbox Code Playgroud)

导致

在此处输入图片说明

如何使用轮廓将颜色条范围强制为 0 到 2?

python matplotlib

10
推荐指数
1
解决办法
7052
查看次数

如何在训练后保存和加载我的神经网络模型以及Python中的权重?

我用Python训练了一个单层神经网络模型(一个没有keras和tensorflow的简单模型)。在Python中训练后如何将其与权重一起保存,以及稍后如何加载?

python pickle scikit-learn

7
推荐指数
2
解决办法
2万
查看次数

无法使用python加载ecCodes库

我已经安装了 ecCodes 库

pip install eccodes
Run Code Online (Sandbox Code Playgroud)

当我用“pip list”检查它时,它似乎安装为 0.9.7 版本,但命令:

python -m eccodes selfcheck
Run Code Online (Sandbox Code Playgroud)

返回错误

RuntimeError: Could not load the ecCodes library!
Run Code Online (Sandbox Code Playgroud)

当我尝试导入 eccodes 时,会发生同样的错误。我使用的是 Windows 10 和 Python 3.7.6 有什么问题吗?

完整错误:

import eccodes
Traceback (most recent call last):

  File "<ipython-input-1-cfa7540a6bb2>", line 1, in <module>
    import eccodes

  File "C:\Users\admin1\anaconda3\lib\site-packages\eccodes\__init__.py", line 15, in <module>
    from .eccodes import *

  File "C:\Users\admin1\anaconda3\lib\site-packages\eccodes\eccodes.py", line 12, in <module>
    from gribapi import __version__

  File "C:\Users\admin1\anaconda3\lib\site-packages\gribapi\__init__.py", line 13, in <module>
    from .gribapi import *  # noqa

  File …
Run Code Online (Sandbox Code Playgroud)

python eccodes

7
推荐指数
1
解决办法
9631
查看次数

使用 cdo 将通用网格类型转换为 lonlat 网格类型

我目前正在尝试使用一个 NetCDF 文件(可以从https://doi.pangaea.de/10.1594/PANGAEA.828650下载的开源数据)从该数据集中提取特定纬度(https://www.nodc .noaa.gov/archive/arc0105/0160558/3.3/data/0-data/spco2_1982-2015_MPI_SOM-FFN_v2016.nc,再次开源)。

第一个数据集是全球海洋中被称为生物群落的定义区域,我已成功从该区域中提取了覆盖标记为 16 和 17 的生物群落的区域。

该数据集具有以下网格类型:

gridtype  = generic
gridsize  = 64800
xsize     = 180
ysize     = 360
xname     = lat
xunits    = "degrees latitude"
yname     = lon
yunits    = "degrees longitude"
xfirst    = -89.5
xinc      = 1
yfirst    = -179.5
yinc      = 1
Run Code Online (Sandbox Code Playgroud)

第二种网格类型是海洋碳通量的全球数据集(参数:fgco2_raw),我希望从 Time_Varying_Biomes.nc 中生物群落 16 和 17 定义的区域中提取值。

此数据集 spco2_1982-2015_MPI_SOM-FFN_v2016.nc 具有以下网格类型:

gridtype  = lonlat
gridsize  = 64800
datatype  = float
xsize     = 360
ysize     = 180
xname     = lon
xlongname …
Run Code Online (Sandbox Code Playgroud)

netcdf4 cdo-climate

7
推荐指数
1
解决办法
8385
查看次数

将 grib 转换为 netcdf 文件

有没有办法在 Windows 上将 grib 文件转换为 NetCDF 格式?
我使用了一个名为的软件,tkdegrib但它通过一个参数捕获一个参数,而我希望所有 grib 的参数都在同一个文件中。不幸的是,我不能使用 Linux。

netcdf grib cdo-climate

6
推荐指数
1
解决办法
7063
查看次数

有没有办法裁剪NETCDF文件?

想象一下,您有一个文件example.nc,其风力数据定义在90N,90S,180E,180W区域.无论如何我可以在linux中使用简单的nc类型命令(不用在matlab/python中提取数据来重写),裁剪此文件以包含一个较小的区域,上面的子集.

例如,30N,10S,60E和30W.

linux netcdf nco cdo-climate

6
推荐指数
2
解决办法
4696
查看次数

如何计算bash中netcdf文件中随时间维度求和的缺失值数量

我有一个 netcdf 文件,其中的数据是 lon、lat 和 time 的函数。我想计算在时间维度上求和的每个网格单元中缺失条目的总数,最好使用 CDO 或 NCO,因此我不需要调用 R、python 等。

我知道如何获得缺失值的总数

ncap2 -s "nmiss=var.number_miss()" in.nc out.nc
Run Code Online (Sandbox Code Playgroud)

正如我对这个相关问题的回答: count number of missing values in netcdf file - R

并且 CDO 可以告诉我空间总和

cdo info in.nc
Run Code Online (Sandbox Code Playgroud)

但我不知道如何随着时间的推移求和。例如,有没有一种方法可以指定要在 ncap2 中使用 number_miss 求和的维度?

bash netcdf missing-data nco cdo-climate

6
推荐指数
1
解决办法
1067
查看次数

用锥形窗口计算运行平均值

给出(虚拟)向量

index=log(seq(10,20,by=0.5))
Run Code Online (Sandbox Code Playgroud)

我想计算具有居中窗口的运行平均值和每端的锥形窗口,即第一个条目保持不变,第二个是窗口大小的平均值3,依此类推,直到达到指定的窗口大小.

这里给出的答案:计算移动平均线,似乎都会产生一个较短的向量,切断窗口太大的起点和终点,例如:

ma <- function(x,n=5){filter(x,rep(1/n,n), sides=2)}

ma(index)

Time Series:
Start = 1 
End = 21 
Frequency = 1 
[1]       NA       NA 2.395822 2.440451 2.483165 2.524124 2.563466 2.601315
[9] 2.637779 2.672957 2.706937 2.739798 2.771611 2.802441 2.832347 2.861383
[17] 2.889599 2.917039 2.943746       NA       NA
Run Code Online (Sandbox Code Playgroud)

同样的

rollmean(index,5)
Run Code Online (Sandbox Code Playgroud)

来自动物园的包裹

有没有一种快速的方法来实现锥形窗口而不需要编写循环编码?

r running-total mean zoo

6
推荐指数
2
解决办法
397
查看次数

在季节周期分析中处理NA

我有一个包含大量缺失数据点的月度数据的时间序列,设置为NA.我想简单地从数据中减去年度周期,忽略丢失的条目.似乎分解函数无法处理丢失的数据点,但我在其他地方看到过建议使用季节性包.但是我也遇到了NA的问题.

以下是使用内置数据集的问题的最小可重现示例...

library(seasonal)

# set range to missing NA in Co2 dataset
c2<-co2
c2[c2>330 & c2<350]=NA
seas(c2,na.action=na.omit)

Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

是的我知道!这就是为什么我要你省略它们!我们试试这个:

seas(c2,na.action=na.x13)

Error: X-13 run failed

Errors:
- Adding MV1981.Apr exceeds the number of regression effects
  allowed in the model (80).
Run Code Online (Sandbox Code Playgroud)

嗯,有趣,不知道这意味着什么,好吧,请排除NA:

seas(c2,na.action=na.exclude)

Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

这没多大帮助!并且好的措施

decompose(c2)

Error in na.omit.ts(x) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

我在以下内容:

R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright …
Run Code Online (Sandbox Code Playgroud)

r time-series xts

6
推荐指数
1
解决办法
411
查看次数