计算 Neo4j 中每个元素的列表值的平均值

Compute Avg of list value for each element in Neo4j

要解决的问题是:

List: [x1, y1, z1], [x2, y2, z2] ...[xn, yn, zn]

预期输出:

[(x1+x2+..+xn)/n, (y1+y2+..yn)/n, (z1+z2+..+z3)/n]

`

当我只有 2 个列表并且使用以下语句固定大小时,我能够执行加法:

UNWIND(apoc.coll.zip([1,2,3], [4,5,6])) as output

RETURN COLLECT(apoc.coll.avg(output))

输出为

[2.5, 3.5, 4.5]

但是无法计算 n 列表的动态数量。需要计算 avg 的列表大小是常量。

Neo4j Desktop Graph 版本:3.5.18

APOC 库: 3.5.0.12

提前致谢!

假设您将 "sublists" 的列表作为 parameterlist 传递,这可能对您有用:

RETURN [w IN
  REDUCE(s = [], sublist IN $list | CASE
    WHEN SIZE(s) = 0 THEN sublist
    ELSE [i IN RANGE(0, SIZE(s)-1) | s[i] + sublist[i]]
    END) |
  w / TOFLOAT(SIZE($list))] AS result

REDUCE 用于生成单个列表,其中包含相应子列表元素的总和。