我有一组n
3D积分(x,y,z)
,我想计算其均值。
特别是我的目的是比较几个指标之间的差异。
欧几里德距离:D_E(D_1,D_2) = ||D_1 - D_2||
黎曼距离:D_R(D_1,D_2) = ||log(D_1^(-1/2) * D_2 * D_1^(-1/2))||
一旦我修正了一个指标,我应该计算一个最小化问题。
我在Python Scipy.optimize中创建了这类任务,但我不知道如何制定问题。我应该使用for循环吗?
编辑:
我找到了 scipy.optimize.leastsq 。对我的目标来说,它似乎很有用。我如何在梯度下降框架中使用它?
答案 0 :(得分:1)
>>> import numpy as np
>>> a = np.array([[1,2,3],[1,2,3],[7,-100,8]])
>>> a.mean(axis=0)
array([ 3. , -32. , 4.66666667])
答案 1 :(得分:0)
没有额外的库:
>>> make_operation = lambda op: lambda *points: tuple(map(op, *points))
>>> add = make_operation(lambda x1, x2: x1 + x2)
>>> sub = make_operation(lambda x1, x2: x1 - x2)
>>> print add((1,2,3), (4,5,6))
(3,5,7)
>>> div = lambda point, num: tuple(map(lambda x: float(x) / num, point))
>>> print div((4,6,8), 2)
(1,2,3)
>>> mean = lambda *points: div(reduce(add, points), len(points))
>>> print mean((1,2,3), (1,2,3), (7,-100,8))
(3.0, -32.0, 4.666666666666667)