Эквивалент вычитания из itertools.product () - PullRequest
0 голосов
/ 17 ноября 2018

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

Упрощая мою проблему, у меня есть 2 набора точек, в матрицах "A" и "B", таких, что:

A = [[x1, y1], [x2, y2],...] and B = [[x'1, y'1], [x'2, y'2],...] 

Я хотел бы создать функцию, которая выводит матрицу, C, с элементами:

Cij  = atan((y'i - yj)/(x'i - xj))

По существу, угол (относительно оси x), представленный линией, соединяющей любые две точки, по одной из каждого списка.Набор данных достаточно большой, так что вложенные циклы FOR не подходят.

Текущие попытки привели меня к функции продукта itertools.Если бы существовал эквивалент, обеспечивающий вычитание между элементами (т. Е. Y'i-yj), я мог бы пойти оттуда довольно просто.

Кто-нибудь знает о чем-то, что обеспечивало бы эту функциональность?Или, возможно, любой другой способ достижения угла между всеми этими точками без медленного итеративного процесса?

Заранее спасибо,

Алекс

1 Ответ

0 голосов
/ 17 ноября 2018

Используйте NumPy для этих вычислений

import numpy as np

A = np.array(A)
B = np.array(B)

C = np.arctan((B[:, None,  1] - A[:, 1]) / (B[:, None, 0] - A[:, 0]))
...