【发布时间】:2020-07-24 22:59:00
【问题描述】:
我想从具有 10000 个元素的向量 (v) 生成一个 9000*1000 矩阵 (m)。具体来说,m的第i行是v[i:i+1000]。我使用了以下脚本,完成了 1.3 秒。我想知道有没有办法让它加速?
v = 1..10000
m = matrix(DOUBLE, 9000, 1000)
timer for(i in 0:9000) m[i,] = v[i:(i+1000)]
【问题讨论】:
我想从具有 10000 个元素的向量 (v) 生成一个 9000*1000 矩阵 (m)。具体来说,m的第i行是v[i:i+1000]。我使用了以下脚本,完成了 1.3 秒。我想知道有没有办法让它加速?
v = 1..10000
m = matrix(DOUBLE, 9000, 1000)
timer for(i in 0:9000) m[i,] = v[i:(i+1000)]
【问题讨论】:
矩阵在 DolphinDB 数据库中以列的主要顺序存储。因此,沿列的操作比沿行的操作效率更高。如果你重写你的代码如下
v = 1..10000
m = matrix(DOUBLE, 9000, 1000)
timer for(i in 0:1000) m[i] = v[i:(i+9000)]
只需要大约 20 毫秒即可完成。
【讨论】: