2009-05-20 6 views
13

में वेक्टर का 1-मानदंड प्राप्त करें मैं पाइथन में दो वैक्टर, ||a - b||_1 = sum(|a_i - b_i|) के अंतर के 1-मानक की गणना कैसे कर सकता हूं?पायथन

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

||a - b||_1 = 4 
+0

क्या आप इसे थोड़ा सा स्पष्ट कर सकते हैं? यह स्पष्ट नहीं है (कम से कम) आप जिस ऑपरेशन को करने की कोशिश कर रहे हैं ... यह 4 डी वेक्टर दूरी नहीं है, और एक सेट चौराहे नहीं है, तो यह क्या है? – unwind

+0

दूसरा, यह नहीं पता कि आप यहां क्या करने की कोशिश कर रहे हैं। –

+3

शायद वह 1-मानक दूरी का मतलब है। –

उत्तर

6

आप दो सरणियों की बनती घटकों के बीच मतभेद की राशि के लिए पूछ रहे हैं:

>>> A=[1,2,3,4] 
>>> B=[2,3,4,5] 
>>> sum(abs(a - b) for a, b in zip(A, B)) 
4 
2

यह स्पष्ट नहीं है कि क्या वास्तव में यहाँ की आवश्यकता है, लेकिन यहाँ मेरा अनुमान है

है
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) 
20

अजगर बिल्ट-इन शक्तिशाली होते हैं, लेकिन अजगर सूचियों गणितीय वैक्टर या मैट्रिक्स नहीं हैं। आप सूचियों के साथ ऐसा कर सकते हैं, लेकिन यह मामूली परिचालनों से कहीं अधिक के लिए बोझिल होगा।

आप पाते हैं अपने आप को वेक्टर या मैट्रिक्स गणित अक्सर ज़रूरत है, तो क्षेत्र में मानक NumPy, जो शायद पहले से ही अपने ऑपरेटिंग सिस्टम के लिए जिस तरह से अजगर भी था पैक आता है।

के बारे में मैं यह वास्तव में आप क्या करने की कोशिश कर रहे हैं, लेकिन शायद 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 
8

NumPy में, दो वैक्टर a और b के लिए, यह सिर्फ

है