计算 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" 的列表作为 parameter、list
传递,这可能对您有用:
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
用于生成单个列表,其中包含相应子列表元素的总和。
要解决的问题是:
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" 的列表作为 parameter、list
传递,这可能对您有用:
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
用于生成单个列表,其中包含相应子列表元素的总和。