web-dev-qa-db-ja.com

Python)でベクトルの1ノルムを取得します

Pythonで2つのベクトルの差の1ノルム||a - b||_1 = sum(|a_i - b_i|)を計算するにはどうすればよいですか?

a = [1,2,3,4]  
b = [2,3,4,5]

||a - b||_1 = 4  
17
dhiv

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
28
bignose

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

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)
3
Anurag Uniyal