怎么对一个矩阵,按一个和它形状相同的mask矩阵,在每行分组求均值

attachments-2022-10-3W64brWJ6358ad55e71e2.jpg

如图,请问有比 for 循环更快的方法吗?


请先 登录 后评论

2 个回答

Margo

如果您使用的 DolphinDB 是 2.0 及以上的版本,可以使用以下代码:

value=matrix( 100 200 100,200 100 200,100 200 100);
mask=matrix( 1 2 1,1 1 2,1 2 1);
each(def(v, m):v[groups(m, 'table').index].rowAvg(), value, mask);


如果是 2.0 以下的版本,可以使用:

value=matrix( 100 200 100,200 100 200,100 200 100)
mask=matrix( 1 2 1,1 1 2,1 2 1)
each(def(v, m)->groupby(avg, v, m).avg, value, mask)

比较细节的一点,DolphinDB 的矩阵是列优先,each 遍历矩阵的时候也是按列遍历


请先 登录 后评论
Polly

用副词的写法,可以写为:

v = (100 200 100, 200 100 200, 100 200 100)
mask = (1 2 1, 1 1 2, 1 2 1)
avg:E:E v at:E:R groups:L(mask, 'tuple')
请先 登录 后评论
  • 2 关注
  • 0 收藏,808 浏览
  • 提出于 2022-10-26 11:47

相似问题