series_dot_product()

计算两个数值序列的点积。

函数 series_dot_product() 将两个数值序列用作输入,并计算它们的点积

语法

series_dot_product(series1,series2)

替代语法

series_dot_product(series, numeric)

series_dot_product(numeric, series)

备注

备用语法显示两个函数参数中的一个可以是数值标量。

此数值标量将广播到其长度等于相应数值序列长度的向量。

例如,series_dot_product([1, 2, 3], 10) 将被视为 series_dot_product([1, 2, 3], [10, 10, 10])

详细了解语法约定

参数

客户 类型​​ 必需 说明
series1, series2 dynamic 包含数值数据的输入数组,将按元素相乘,然后求和以得出 real 类型的值。

返回

返回 real 类型的值,其值为 series1 的每个元素与 series2 的相应元素的乘积之和。 如果两个序列长度不相等,则较长的序列将截断为较短序列的长度。 将忽略输入序列的任何非数值元素。

备注

如果一个或两个输入数组为空,则结果为 null

优化性能

为了在使用此函数时提高性能并降低存储要求,请考虑使用 Vector16 编码策略来存储不需要 64 位精度的浮点矢量,例如 ML 矢量嵌入。 利用 Bfloat16 浮点表示形式的 Vector16 配置文件可以显著优化操作,并将存储大小减少 4 倍。 有关 Vector16 编码策略的更多详细信息,请参阅编码策略类型

示例

range x from 1 to 3 step 1 
| extend y = x * 2
| extend z = y * 2
| project s1 = pack_array(x,y,z), s2 = pack_array(z, y, x)
| extend s1_dot_product_s2 = series_dot_product(s1, s2)
s1 s2 s1_dot_product_s2
[1,2,4] [4,2,1] 12
[2,4,8] [8,4,2] 48
[3,6,12] [12,6,3] 108
range x from 1 to 3 step 1 
| extend y = x * 2
| extend z = y * 2
| project s1 = pack_array(x,y,z), s2 = x
| extend s1_dot_product_s2 = series_dot_product(s1, s2)
s1 s2 s1_dot_product_s2
[1,2,4] 1 7
[2,4,8] 2 28
[3,6,12] 3 63