Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dask xarray load()在open_mfdataset()数据上缓慢运行_Dask_Python Xarray - Fatal编程技术网

Dask xarray load()在open_mfdataset()数据上缓慢运行

Dask xarray load()在open_mfdataset()数据上缓慢运行,dask,python-xarray,Dask,Python Xarray,对于我用open_mfdataset()打开的数据集,运行xarray.DataArray.values需要21秒 从我用open\u dataset()打开的更大数组中获取值的速度快了1000多倍。编辑:使用for循环在多个文件上循环也比使用open_mfdataset()快得多。请参见底部的“编辑” 你能帮助我理解为什么会发生这种情况,或者寻找什么,如果有更快的方法让我打开40个NetCDF,进行一些选择,并将所选数据导出到numpy吗 我的代码大致如下: ds=xr.打开mfdataset

对于我用
open_mfdataset()
打开的数据集,运行
xarray.DataArray.values
需要21秒

从我用
open\u dataset()
打开的更大数组中获取值的速度快了1000多倍。编辑:使用for循环在多个文件上循环也比使用
open_mfdataset()
快得多。请参见底部的“编辑”

你能帮助我理解为什么会发生这种情况,或者寻找什么,如果有更快的方法让我打开40个NetCDF,进行一些选择,并将所选数据导出到numpy吗

我的代码大致如下:

ds=xr.打开mfdataset(我的文件列表,concat\u dim='new\u dim')
ds=ds.sel(时间=所选日期)
ds=ds.sel(纬度=切片([ymin,ymax]),经度=切片([xmin,xmax]))
VAL=ds[“温度]。数值#这条线需要18.9秒
#总时间:21秒
#vals.shape=(40,1,26,17)
vs

onefile=xr.open_数据集('/path/to/data/single_file.nc'))
VAL=onefile['temperature'].值#此行需要0.005秒
#总时间:0.018秒
#vals.shape=(93,40,26,17)
谢谢

编辑-额外信息:

我要澄清的是,似乎是加载速度慢。当
被称为以前懒惰的数组时。如果插入显式的
load()
命令,则加载速度较慢,但值命令较快:

ds=xr.打开mfdataset(我的文件列表,concat\u dim='new\u dim')
ds=ds.sel(时间=所选日期)
ds=ds.sel(纬度=切片([ymin,ymax]),经度=切片([xmin,xmax]))
ds=ds.load()#此行需要19秒

vals=ds['temperature'].values#此行采用
xarray。open_mfdataset
将创建
xarray.Datasets的python列表,并在所有文件解析到该列表后将它们连接起来。

因此,必须多次打开数据并将其存储到列表中。如果您分析代码,您将认识到文件解析花费的时间最多,但它与文件的大小无关。因此,一个2倍大的文件不需要2倍多的时间来解析。最后,连接本身需要时间

因此,您的
single_文件
包含从
myfiles_列表
解析的所有文件?my
single_文件
包含许多从
myfiles_列表
文件中提取的内容。它小于
myfiles\u列表
files的总文件大小。谢谢。是的,它正在从文件加载值,这占用了大部分时间,但也使用
xarray。open_mfdataset
比单独循环文件然后在numpy中串联要慢得多。我在我的问题中添加了更多的信息。很好。也许xarray的一些贡献者会阅读这篇文章,并给出更好的解释。