Элегантные и / или быстрые эквиваленты Excel SUMXMY2 (сумма квадратов разностей соответствующих элементов массива) в Python - PullRequest
0 голосов
/ 04 ноября 2019

Тестовый образец:

a = [0.1357678   0.27303184 -0.75600229]
b = [0.3813097  -0.72613616  0.18361217]

Я хотел бы реализовать SUMXMY2(a, b) в Python без циклов for

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Насколько я знаю, - не является допустимым оператором для списков, поэтому я бы использовал понимание списка. Технически он использует цикл for, однако я бы назвал его «достаточно элегантным».

c = [(b[i] - a[i]) ** 2 for i in range(len(b))]
result = sum(c)

Чтобы сделать его более компактным, но менее читаемым:

c = sum([(b[i] - a[i]) ** 2 for i in range(len(b))])

Если выимея дело со списками разной длины, используйте это:

c = [(b[i] - a[i]) ** 2 for i in range(min(len(b), len(a)))]
result = sum(c)
0 голосов
/ 04 ноября 2019

Разница в квадрате определяется как:

c = ((a - b) ** 2)

Затем сумма просто определяется как

c = c.sum()

, если a и b являются списками, вы можете сначала преобразовать их в серию панд:

a = pd.Series(a)

или для массива numy как:

a = np.asarray(a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...