25

||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  
4

4 に答える 4

37

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
于 2009-05-20T08:15:52.533 に答える
15

NumPy では、2 つのベクトルabの場合、これはちょうど

numpy.linalg.norm(a - b, ord=1)
于 2009-05-20T08:20:33.303 に答える
9

2 つの配列のペアのコンポーネント間の差の合計を求めているようです。

>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4
于 2009-05-20T07:52:53.530 に答える
5

ここで正確に何が必要かは明らかではありませんが、ここに私の推測があります

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)
于 2009-05-20T07:54:17.473 に答える