小编Adr*_*ins的帖子

组合了大量的netCDF文件

我有一个netCDF(.nc)文件的大文件夹,每个文件都有一个相似的名字.数据文件包含时间,经度,纬度和月降水量的变量.目标是使每个月的平均月降水量超过X年.因此,最后我将得到12个值,表示每个纬度和长度的X年平均月降水量.多年来,每个文件都是同一个位置.每个文件以相同的名称开头,以"date.sub.nc"结尾,例如:

'data1.somthing.somthing1.avg_2d_Ind_Nx.200109.SUB.nc'
'data1.somthing.somthing1.avg_2d_Ind_Nx.200509.SUB.nc'
'data2.somthing.somthing1.avg_2d_Ind_Nx.201104.SUB.nc'
'data2.somthing.somthing1.avg_2d_Ind_Nx.201004.SUB.nc'
'data2.somthing.somthing1.avg_2d_Ind_Nx.201003.SUB.nc'
'data2.somthing.somthing1.avg_2d_Ind_Nx.201103.SUB.nc'
'data1.somthing.somthing1.avg_2d_Ind_Nx.201203.SUB.nc'
Run Code Online (Sandbox Code Playgroud)

结局是YearMonth.SUB.nc到目前为止我所拥有的是:

array=[]
f = nc.MFDataset('data*.nc')
precp = f.variables['prectot']
time = f.variables['time']
array = f.variables['time','longitude','latitude','prectot'] 
Run Code Online (Sandbox Code Playgroud)

我得到一个KeyError :('时间','经度','纬度','prectot').有没有办法结合所有这些数据,所以我能够操纵它?

python netcdf cdo-climate

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

如何将路径的(X,Y)坐标列表拆分为单独的 X 和 Y 坐标列表?

在下面的函数中,'graph' 是一个由 1、0 和 '2'(分别是障碍物、开放区域和目标)组成的 2d 网格列表,'start' 是开始搜索的点。

def bfs(图形,开始):

fringe = [[start]]
# Special case: start == goal
if start.val == 'g':
    return [start]
start.visited = True
# Calculate width and height dynamically. We assume that "graph" is dense.
width = len(graph[0])
height = len(graph)
# List of possible moves: up, down, left, right.

moves = [(-1, 0), (1, 0), (0, -1), (0, 1)]
while fringe:
    # Get first path from fringe and extend it by possible moves.

    path …
Run Code Online (Sandbox Code Playgroud)

python split instance coordinates python-2.7

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

R中的netCDF文件

我有从此处获得的netCDF文件,名称为precip.mon.total.v6.nc。我正在ncdfR中使用软件包打开和分析文件。

 new <- open.ncdf("precip.mon.total.v6.nc")
    > new
    [1] "file precip.mon.total.v6.nc has 4 dimensions:"
    [1] "lat   Size: 360"
    [1] "lon   Size: 720"
    [1] "nbnds   Size: 2"
    [1] "time   Size: 1320"
    [1] "------------------------"
    [1] "file precip.mon.total.v6.nc has 1 variables:"
    [1] "float precip[lon,lat,time]  Longname:GPCC Monthly total of     precipitation Missval:-9.96920996838687e+36"
Run Code Online (Sandbox Code Playgroud)

但是当我提取变量时,我得到了错误

      > get.var.ncdf(new, "precip")
Error: cannot allocate vector of size 2.5 Gb
In addition: Warning messages:
1: In double(totvarsize) :
  Reached total allocation of 2047Mb: see help(memory.size)
2: In …
Run Code Online (Sandbox Code Playgroud)

gis r netcdf cdo-climate

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

在 bash、R、python 或 NCL 中将 hdf5 转换为 netcdf4?

有没有一种快速简单的方法可以从 bash 的命令行将 HDF5 文件转换为 netcdf(4)?或者在 R、NCL 或 python 中自动处理此类转换的简单脚本?

python r hdf5 netcdf4 ncl

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

使用 bc 对数组进行 bash 操作

从阅读 bc 的手册页来看,BC 似乎可以接受简单变量,也可以接受数组作为输入。

但是,如果我尝试添加两个数组,我只会得到一个元素作为输出

a=(1 2 3)
b=(10 11 12)
c=`echo "$a + $b" | bc`
Run Code Online (Sandbox Code Playgroud)

那么c只包含11。是否有办法让bc对数组中的所有元素进行操作以产生(11 13 15)作为输出?或者我需要做一个循环吗?

bash bc

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

在单个命令中将两个 NetCDF 文件中的变量相乘

我有两个 netcdf 文件:带有变量 qty_1 和 qty_2 的 file_1.nc 以及带有变量 qty_3、qty_4 和 qty_5 的 file_2.nc。我想要一个包含 3 个变量的文件 qty_3=qty_3*qty_2; qty_4=qty_4+qty_2 和 qty_5。

现在我首先使用将变量复制到 file_2

ncks  -A -v qty_1,qty_2 file_1.nc file_2.nc
Run Code Online (Sandbox Code Playgroud)

然后我正在进行数学运算,

ncap2 -A -s 'qty_3=qty_3*qty_2' -s 'qty_4=qty_4+qty_2' file_2.nc
Run Code Online (Sandbox Code Playgroud)

然而,这需要一些时间。

有没有办法可以用一个命令来完成这个计算?

netcdf nco ncks cdo-climate

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

从多年 netcdf 文件中仅提取 1 个月的内容

我对编程很陌生,我想知道你是否可以帮助我。我有一个包含 2000 年到 2020 年每日降水量数据的文件。我想pandas我可以创建一个数据框,其中仅包含一月份的值 \xe2\x80\x8b\xe2\x80\x8b 但我不明白如何。或者也许CDO创建一个仅包含这些值的新文件。有人可以帮助我吗?我会很感激

\n

netcdf dataframe pandas cdo-climate

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

在列表上执行数学运算(是否递归?)

假设我们有以下列表

lst = [3,6,1,4]
Run Code Online (Sandbox Code Playgroud)

我希望能够从此列表中获得以下结果

result = [4, 10, 11, 15]
Run Code Online (Sandbox Code Playgroud)

计算模式如下:

1 + 3 = 4

1 + 3 + 6 = 10

1 + 3 + 6 + 1 = 11

1 + 3 + 6 + 1 + 4 = 15

换句话说,结果是1加上输入数组的累加和。

如何定义一种可以解决此问题的功能?

python recursion list python-2.7

0
推荐指数
1
解决办法
92
查看次数

与IBITS相反的功能?如何使用位子集在FORTRAN中存储整数?

我有一个内存关键的FORTRAN程序,它目前使用两个整数数组,第一个使用4个BYTES整数,第二个使用1个BYTE整数.

两个数组都没有"完全"使用,即我知道存储在4字节数组中的数字不会超过一百万左右(所以我需要超过2个字节,但我没有使用4个字节的所有位)同样我只使用2位的1字节数组作为"标志".

为了节省内存,我想尝试将两者结合起来,即使用4字节数组的最左边两位来存储2个标志.

现在我知道如果我首先设置INTEGER值,我可以随后使用IBSET/IBCLR设置标志,并且仍然使用IBITS函数安全地提取我的整数以提取最右边的X位(在这种情况下X = 28):

integer(kind=4) :: imark,inum 

imark=600245 ! example number 

! use bits 29 and 30 to store flags...
imark=IBSET(imark,29) 
imark=IBSET(imark,30)

print *,imark ! gives 1611212981

! extract right most bits:
inum=IBITS(imark,0,28)
print *,inum  ! gives back 600245 as desired.
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何修改整数,同时保留标志的内存.换句话说,我需要 IBITS 相反的功能,复制一个只分配最右边X位的整数.

显然,如果我分配一个新的整数值(imark = 343525),它将重置标志位.我可以编写一个函数,一次循环一个新整数值的最右边X位,然后在我的4字节数组中使用IBSET/IBCLR设置它们,但这看起来非常冗长.但我没有找到执行此任务的任何内在功能.

memory fortran bits

0
推荐指数
1
解决办法
79
查看次数

标签 统计

cdo-climate ×4

netcdf ×4

python ×4

python-2.7 ×2

r ×2

bash ×1

bc ×1

bits ×1

coordinates ×1

dataframe ×1

fortran ×1

gis ×1

hdf5 ×1

instance ×1

list ×1

memory ×1

ncks ×1

ncl ×1

nco ×1

netcdf4 ×1

pandas ×1

recursion ×1

split ×1