||a - b||_1 = sum(|a_i - b_i|)
Pythonで2つのベクトルの差の1ノルムを計算するにはどうすればよいですか?
a = [1,2,3,4]
b = [2,3,4,5]
||a - b||_1 = 4
Python には強力な組み込み型がありますが、 Python リストは数学的なベクトルや行列ではありません。リストでこれを行うこともできますが、簡単な操作以外の場合は面倒になる可能性があります。
ベクトル演算や行列演算が頻繁に必要になる場合、この分野の標準はNumPyです。これはおそらく、Python と同様にオペレーティング システム用にパッケージ化されています。
私はあなたがやろうとしていることについて他の人の混乱を共有していますが、おそらくnumpy.linalg.norm関数が役立ちます:
>>> import numpy
>>> a = numpy.array([1, 2, 3, 4])
>>> b = numpy.array([2, 3, 4, 5])
>>> numpy.linalg.norm((a - b), ord=1)
4
それが内部でどのように機能しているかを示すには:
>>> a
array([1, 2, 3, 4])
>>> b
array([2, 3, 4, 5])
>>> (a - b)
array([-1, -1, -1, -1])
>>> numpy.linalg.norm((a - b))
2.0
>>> numpy.linalg.norm((a - b), ord=1)
4
NumPy では、2 つのベクトルa
とb
の場合、これはちょうど
numpy.linalg.norm(a - b, ord=1)
2 つの配列のペアのコンポーネント間の差の合計を求めているようです。
>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4
ここで正確に何が必要かは明らかではありませんが、ここに私の推測があります
a=[1,2,3,4]
b=[2,3,4,5]
def a_b(a,b):
return sum(map(lambda a:abs(a[0]-a[1]), zip(a,b)))
print a_b(a,b)