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 |