Умножение векторов из одного и того же списка и вывод 2 самых высоких результатов - PullRequest
1 голос
/ 06 марта 2020

У меня есть функция, которая умножает 2 вектора

mltply(vec1, vec2)

У меня также есть список с n числом векторов.

vectors_list = [array([1,2,4],dtype=float32), array([2,2,1],dtype=float32), array([3,5,1], dtype=float32)]

Я хотел бы умножить каждый вектор в списке массивов на каждый другой вектор в списке, а затем вывести 3 максимальных результата.

Я пробовал следующее, но это не так не работает.

for vec in vectors_list:
        print(mltply(vec,vec1) for vec, vec1 in zip(vectors_list,vectors_list[1:]))

1 Ответ

1 голос
/ 06 марта 2020

вы можете использовать itertools.combination , чтобы умножить каждый вектор в списке массивов на каждый другой вектор в списке:

import itertools

result = [mltply(v1, v2) for v1, v2 in itertools.combinations(vectors_list, 2)]

, чтобы напечатать 3 самых высоких результата, которые вы можете использовать встроенная функция sorted, или вы можете отсортировать встроенный список с помощью list.sort, а затем разделить верхние 3 элемента:

print(sorted(result)[-3:])

или:

result.sort()
print(result[-3:])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...