有什么高效的方法从vector转成matrix

王俊永
  • 709

在DolphinDB database中,我想做一个matrix,它是从一个vector转换过来的,比如这个vector长度为1000,我希望得到一个900*100的matrix, 使得i 行是 v[i:(i+100)]。 请问有什么高效的办法吗?

回复
阅读 861
1 个回答
✓ 已被采纳

DolphinDB的矩阵在物理存储是按照列优先(column major)进行的。也就是说,矩阵在内存中的存储模型相当于是把矩阵的每一个列首尾连接起来占用了一段连续的空间。因此,按列读写矩阵比按行读写有更高的效率。下面我们通过具体代码来测试。

按行读写测试100次,耗时月1480ms

timer(100) {
v = double(1..1000)
m1 = matrix(DOUBLE,900,100)
for(i in 0:900) m1[i,] = v[i:(i+100)]
}

按列读写测试100次,耗时月22ms。比按行读写快近70倍。

timer(100){
x=double(1..1000)
m1 = matrix(DOUBLE, 900, 100)
for(i in 0:100) m1[i] = v[i:(i+900)]
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏