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

发布于 2022-09-12 03:48:38 字数 131 浏览 22 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一梦浮鱼 2022-09-19 03:48:38

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)]
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文