如何将一个向量和表每行数据相乘?

请问怎么把一个长度为 3 的向量乘到一个 100行 3 列的表每一行上?

例如

我的向量为:

attachments-2023-03-lhRTmHyK64004f2e29762.png


表数据如图所示:


attachments-2023-03-yR09IveU64004c9a79326.png







请先 登录 后评论

2 个回答

veryOrdinary

DolphinDB 中的 table 在高阶函数处理时,默认是按行处理(每一个是一个字典),如果要按列处理,可以用 values 函数转化成tuple,或者用 flip 函数转化成一个列名为 key 列数据为 value 的字典。

v = 1 2 3
t = table(1..100 as a, 1..100 as b, 1..100 as c)

each(*, t.values(), v) //return a matrix
t.flip().mul(v).flip() //return a table(2.00.9和1.30.21开始支持)



请先 登录 后评论
OliviaH

首先模拟生成向量和表格数据:

v = 1 2 3
t = table(1..100 as a, 1..100 as b, 1..100 as c)

将长度为3的向量乘到100行3列的表每一行,可以用以下方法实现:

方案一:使用byRow

result = byRow(mul{v}, matrix(t))

方案二:each+values

result = each(*, t.values(), v)

方案三:flip函数转换成字典

result = t.flip().mul(v).flip()

方案四:each+matrix

result = each(mul, v, matrix(t))}

性能测试

数据量:构建10w行3列的表格和一个长度为3的向量相乘

测试方案:通过timer函数统计单词计算的耗时

测试结果:

attachments-2024-02-nbzHuhQ265bb68b311656.png


请先 登录 后评论
  • 2 关注
  • 0 收藏,789 浏览
  • Polly 提出于 2023-03-02 15:24

相似问题