Я хотел бы найти вектор в массиве. Массив состоит из трехмерных векторов. Я хотел бы получить логическое значение, если я его найду или нет
Для набора / словаря в Python 3 код подобен приведенному ниже,
class Unit(object):
def __init__(self, idx_vertex1, idx_vertex2, weight):
self._idx_vertex1 = idx_vertex1
self._idx_vertex2 = idx_vertex2
def __eq__(self, that):
if not isinstance(that, Edge):
return False
info_that = that.get_info()
return (self._idx_vertex1 == info_that[0]
and self._idx_vertex2 == info_that[1])
def __hash__(self):
idx_sort = sorted([self._idx_vertex1, self._idx_vertex2])
return ((idx_sort[0]+idx_sort[1])*(idx_sort[0]+idx_sort[1]+1)//2
+idx_sort[1])
def get_info(self):
return [self._idx_vertex1, self._idx_vertex2]
def main():
units = set()
for elem in random.sample(range(3070055), 3070055):
units.add(Unit(elem, elem+1, 3))
Для Numpy код выглядит проще:
test_np = np.random.randint(3070055, size=(3070055, 3))
Однако, что касается скорости, оба имеют большую разницу:
>>>if Unit(44, 45, 5) in units:
... return True
Lookup CPU Time: 0.00010633468627929688
>>>np.isin([303,5,822],test_np)
Lookup CPU Time: 1.5214931964874268
Есть ли способ ускорить работу Numpy? Спасибо!