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

如何在DolphinDB中将10个独立价格列合并为DOUBLE[]数组向量列?

问题:将多列档位价格合并为数组向量列

我正在导入Level-2行情数据,对应的CSV文件中订单簿价格分为10个独立列:

symbol,date,time,bidPrice1,bidPrice2,...,bidPrice10,bidQty1,...,bidQty10
000001,20251222,93000000,23.0,22.9,22.8,...,22.1,100,200,150,...,600

加载数据后,得到10个独立的bidPrice1~bidPrice10 DOUBLE类型列。但回测引擎要求bidPrice为DOUBLE[]类型(每行包含全部10个档位的数组向量),需要将这10列合并为单个数组向量列。

尝试过的无效方案

方案1:矩阵+转置

mBidPrice = matrix(bidPrice1, bidPrice2, ..., bidPrice10)
transpose(mBidPrice)

报错:

transpose(mBidPrice) isn't an instance of a class

方案2:each+join

each(join, bidPrice1, bidPrice2, ..., bidPrice10)

报错:

Parameter index out of bound
注:DolphinDB的join仅接受2个参数。

方案3:自定义函数+each

def row10(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10) {
    return [x1,x2,x3,x4,x5,x6,x7,x8,x9,x10]
}
each(row10, bidPrice1, ..., bidPrice10)

该方案执行无效。

有效解决方案

在DolphinDB中,推荐以下两种方法实现需求:

方法1:矩阵转数组向量

先通过matrix将多列组合成矩阵,再通过行迭代器转为数组列:

bidPrice = matrix(bidPrice1, bidPrice2, bidPrice3, bidPrice4, bidPrice5, bidPrice6, bidPrice7, bidPrice8, bidPrice9, bidPrice10).rowIterator().toArray()

方法2:使用row函数批量打包

利用row函数将每行的多列值打包为数组,配合each逐行处理:

bidPrice = each(row, bidPrice1, bidPrice2, bidPrice3, bidPrice4, bidPrice5, bidPrice6, bidPrice7, bidPrice8, bidPrice9, bidPrice10)

row函数会自动将传入的多个参数打包成数组,each会遍历每一行的对应元素,最终生成DOUBLE[]类型的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:03:16