Я пытаюсь найти манхэттенское расстояние между всеми парами векторов.Что не так в следующем коде для вычисления расстояния между всеми парами векторов?
import numpy as np
import itertools
class vector:
def __init__(self):
self.a = 0
self.b = 0
c = vector()
d = vector()
l = vector()
m = vector()
e = [c,d]
n = [l,m]
o = np.array(n)
f = np.array(e)
p = itertools.product(o,f)
p = list(p)
def comp(x):
return (x[0].a-x[1].a) + (x[0].b-x[1].b)
g = np.vectorize(comp)
print g(p)
Я получаю ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 2207, in __call__
return self._vectorize_call(func=func, args=vargs)
File "/usr/local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 2270, in _vectorize_call
ufunc, otypes = self._get_ufunc_and_otypes(func=func, args=args)
File "/usr/local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 2232, in _get_ufunc_and_otypes
outputs = func(*inputs)
File "<stdin>", line 2, in comp
AttributeError: vector instance has no attribute '__getitem__'