You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DolphinDB V3.00.3中按连续重复元素重塑向量?

在DolphinDB V3.00.3中实现偶数长度数值向量的元素连续重复转换

针对需求,这里提供两种DolphinDB原生、无循环的高效解决方案,均能满足输入偶数长度数值向量,输出同长度向量且前半部分元素连续重复两次的要求:

方案一:使用take + rep函数

利用rep生成重复的索引序列,再通过take从原向量中按索引取值,是性能最优的方案之一:

x = [1,2,3,4,5,6,7,8]
halfLen = size(x) / 2
result = take(x, rep(1..halfLen, 2))

执行后result的值为[1,1,2,2,3,3,4,4],完全符合预期,且全程保持数值类型。

方案二:使用each + repeat + flatten函数

你之前尝试each()+repeat()得到字符串向量,大概率是未对each返回的嵌套向量做扁平化处理。正确写法如下:

x = [1,2,3,4,5,6,7,8]
halfLen = size(x) / 2
result = flatten(each(repeat, x[1:halfLen], 2))

each(repeat, x[1:halfLen], 2)会生成嵌套向量[[1,1],[2,2],[3,3],[4,4]],再通过flatten将其展开为一维数值向量,即可得到目标结果。

关于你之前尝试的问题说明

  • each()+repeat()转字符串:若未指定元素类型或操作不当可能触发隐式转换,但上述写法中x为数值向量,each返回的嵌套向量元素仍为数值,flatten后不会变为字符串。
  • reshape()+transpose()顺序混乱:若直接对原向量做reshape(2, halfLen)再转置,会得到按列排列的结果(如[1,3,5,7,2,4,6,8]),不符合需求;但如果仅对前半部分元素处理,就不会有这个问题。

内容的提问来源于stack exchange,提问作者Dongyun Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 05:12:41