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

KDB中如何对含零数组执行前向填充?

Kdb+ 整数数组零值前向填充的类型错误解决办法

错误原因

你碰到的'type错误根源在于:原数组a是整数类型,但你尝试用来替换零值的0N/null是浮点型null,::是通用null——这些值的类型和原整数数组不兼容,Kdb+不允许在整数数组中插入非整数值。

正确解决方案

方案1:用整数类型null替换零值

Kdb+中整数类型的专属null是0Ni,用它替换数组中的零后,再调用fills做前向填充:

a: 0 0 1 0 0 2 0 0 0
a: @[a; where a=0; 0Ni];
fills a

执行结果:0 0 1 1 1 2 2 2 2(整数数组,完全匹配需求)

方案2:转浮点类型后填充

如果需要浮点结果,或者不想记忆整数null的写法,可以先将数组转为浮点类型,再用浮点null0N替换零值:

a: 0 0 1 0 0 2 0 0 0
a: @[float a; where a=0; 0N];
fills a

执行结果:0 0 1 1 1 2 2 2 2f,若要转回整数,可追加int转换:

int fills @[float a; where a=0; 0N]

简洁写法

可以合并操作,一步完成填充:

fills @[a; a=0;:;0Ni]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:45:01