【发布时间】:2019-11-12 20:42:37
【问题描述】:
我在许多 netCDF 文件中注册了数据(大约 5 giga)(两年内每天一个文件)。在这些文件中有 17 个变量,我想找到这些变量的中位数。 我试图连接来自不同数据的每个变量的列表以找到中位数,但我的计算机崩溃了(我总共有 730 个文件。我有 17 个变量,每个变量的维度为 86400) 请问有什么有效的方法来做到这一点。我试过 MFDataset 但它也崩溃了 谢谢
list_of_paths = glob.glob('path/**/*.nc', recursive=True)
time = list(())
a = list(())
b = list(())
c = list(())
d = list(())
e = list(())
f = list(())
g = list(())
h = list(())
i = list(())
j = list(())
k = list(())
l = list(())
m = list(())
n = list(())
o = list(())
p = list(())
for path in list_of_paths:
nc=Dataset(path)
a.extend(list((nc.variables['c1twa-a'])))
b.extend(list((nc.variables['c1twa-b'])))
c.extend(list((nc.variables['c1twa-c'])))
d.extend(list((nc.variables['c1tu1-a'])))
e.extend(list((nc.variables['c1tu1-b'])))
f.extend(list((nc.variables['c1tu2-a'])))
g.extend(list((nc.variables['c1tu2-b'])))
h.extend(list((nc.variables['c1tu2-c'])))
i.extend(list((nc.variables['c1tu3-a'])))
j.extend(list((nc.variables['c1tu3-b'])))
k.extend(list((nc.variables['c1tu4-a'])))
l.extend(list((nc.variables['c1tu4-b'])))
m.extend(list((nc.variables['c1tu5-a'])))
n.extend(list((nc.variables['c1tu5-b'])))
o.extend(list((nc.variables['c1tu6-a'])))
p.extend(list((nc.variables['c1tu6-b'])))
然后我寻找每个变量列表的中位数
【问题讨论】:
-
我认为xarray是你的朋友,它打开5GB数据应该没有问题(它用Dask读取/处理数据,所以内存使用通常不是问题)。
标签: python file bigdata netcdf median