Làm cách nào tôi có thể tính toán 1-norm của sự khác biệt của hai vectơ, ||a - b||_1 = sum(|a_i - b_i|)
bằng Python?Lấy 1-norm của một vector trong Python
a = [1,2,3,4]
b = [2,3,4,5]
||a - b||_1 = 4
Làm cách nào tôi có thể tính toán 1-norm của sự khác biệt của hai vectơ, ||a - b||_1 = sum(|a_i - b_i|)
bằng Python?Lấy 1-norm của một vector trong Python
a = [1,2,3,4]
b = [2,3,4,5]
||a - b||_1 = 4
Bạn dường như được yêu cầu cho tổng của sự khác biệt giữa các thành phần kết hợp của hai mảng:
>>> A=[1,2,3,4]
>>> B=[2,3,4,5]
>>> sum(abs(a - b) for a, b in zip(A, B))
4
Hiện chưa rõ chính xác những gì được yêu cầu ở đây, nhưng ở đây là tôi đoán
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)
Python có các kiểu dựng sẵn mạnh mẽ, nhưng Danh sách Python không phải là các vectơ hoặc ma trận toán học. Bạn có thể làm điều này với danh sách, nhưng nó có thể sẽ là cồng kềnh cho bất cứ điều gì nhiều hơn các hoạt động tầm thường.
Nếu bạn thấy mình cần số vectơ hoặc ma trận thường, tiêu chuẩn trong trường là NumPy, có thể đã được đóng gói cho hệ điều hành của bạn theo cách Python cũng vậy.
tôi chia sẻ sự nhầm lẫn của người khác về chính xác những gì nó là bạn đang cố gắng để làm, nhưng có lẽ là numpy.linalg.norm chức năng sẽ giúp:
>>> import numpy
>>> a = numpy.array([1, 2, 3, 4])
>>> b = numpy.array([2, 3, 4, 5])
>>> numpy.linalg.norm((a - b), ord=1)
4
Để hiển thị như thế nào đó là làm việc dưới bao gồm:
>>> 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
Trong NumPy, cho hai vectơ a
và b
, điều này chỉ là
numpy.linalg.norm(a - b, ord=1)
Bạn có thể làm rõ một chút? Nó không rõ ràng (với tôi, ít nhất) mà hoạt động bạn đang cố gắng để thực hiện ... Nó không phải là một khoảng cách vector 4D, và không phải là một giao điểm thiết lập, vì vậy nó là gì? – unwind
Thứ hai, không biết bạn đang cố làm gì ở đây. –
Ông có thể có nghĩa là khoảng cách 1-norm. –