我有一个netCDF文件,其中的time维度包含2年内按小时计算的数据。我想要取平均值,以获得每个月每天每小时的每小时平均值。我试过这个:
import xarray as xr
ds = xr.open_mfdataset('ecmwf_usa_2015.nc')
ds.groupby(['time.month', 'time.hour']).mean('time')
但是我得到了这个错误:
*** TypeError: `group` must be an xarray.DataArray or the name of
我目前正在处理一些海洋模型输出。在每个时间步骤中,它有42*1800*3600个网格点。
我发现我的程序中的僵尸瓶颈是切片,并在方法中调用xarray_built来提取值。更有趣的是,相同的语法有时需要很大的时间。
ds = xarray.open_dataset(filename, decode_times=False)
vvel0=ds.VVEL.sel(lat=slice(-60,-20),lon=slice(0,40))/100 #in CCSM output, unit is cm/s convert to m/s
uvel0=ds.UVEL.sel(lat=slice(-60
有没有办法在不使用循环的情况下将“行格式”数据集网格化为xarray数据集? 具体地说,我想要一个数组,如果没有指定任何值,(lat,lon,time)网格中的所有值都是0。我知道pandas中的.to_xarray()方法(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_xarray.html),但这不会完全覆盖所需的坐标(经度、经度、时间)。玩具示例如下: import pandas as pd
import xarray as xr
# row data to be gri
我对尝试并行化我的python代码非常陌生。我正在尝试对xarray执行一些分析,然后用结果填充pandas dataframe。数据帧的列是独立的,所以我认为使用dask delayed进行并行化应该是微不足道的,但无法弄清楚如何实现。我的xarray非常大,所以这个循环需要一段时间,而且占用的内存也很大。它也可以被时间分块,如果这样更容易的话(这可能有助于记忆)! 下面是未并行化的版本: from time import sleep
import time
import pandas as pd
import dask.dataframe as dd
data1 = np.random
我正在为C++使用Xtensor库。
我有一个xt::zeros({n,n,3})数组,我要分配它的i,j,元素an xt::xarray{,},这样它将在每个(i,j)上存储一个三维向量。然而,文档并没有提到赋值--我通常无法从文档中了解多个协同面板的数组是如何工作的。
我一直在尝试的是
xt::xarray<double> force(Body body1, Body body2){
// Function to calulate the vector force on body2 from
// body 1
xt::xarray<dou
我目前正在做的是计算向量中所有元素之间的欧几里德距离(元素是2D图像中的像素位置),以查看元素是否彼此接近。我创建一个参考向量,它以增量的方式接受向量中每个索引的值。用MATLAB函数"pdist2“计算了参考向量与像素位置向量中所有元素之间的欧几里德距离,并将结果应用于某些条件;然而,在运行代码时,该函数的计算时间似乎最长(即一次运行时,该函数被调用27 245次,占整个程序运行时间的54% )。是否有更有效的方法来做到这一点,并加快程序?
[~, n] = size(xArray); %xArray and yArray are same size
%Pair the x and
该查询在21秒(执行计划)内运行:
select
a.month
, count(*)
from SubqueryTest a
where a.year = (select max(b.year) from SubqueryTest b)
group by a.month
当子查询被替换为变量时,它在<1秒(执行计划)内运行:
declare @year float
select @year = max(b.year) from SubqueryTest b
select
month
, count(*)
from SubqueryTest wh
什么是与此等效的好cosmodb?我在postgres中的虚拟表上使用了几乎相同的sql,但似乎无法在cosmodb上复制它。
SELECT c.device_id FROM c
WHERE (c.timestamp, c.device_id)
IN (
SELECT c.device_id, MAX(c.timestamp) FROM c WHERE c.device_id in ('00137A100000D2DB', '00137A100000D299') GROUP BY c.device_id