сумма квадратов разности для списка списков с одним элементом списка - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть два списка ниже, и я пытаюсь получить сумму квадратов разности между списками

list = [[20.20458675 17.14946271  2.78568516  5.8363439  14.00318441 11.96825089]
 [ 3.89675236  9.99523907 13.0328716  18.10551237 22.11318234 -0.30354959]]

primary = [0, 1, 0, 0, 0, 1]

result = [x, y]

x is sum of squared difference of each element in list[1] and each element in primary (20.20458675 - 0)**2 + (17.14946271 - 1)**2 + .....
y is sum of squared difference of each element in list[2] and each element in primary (3.89675236 - 0)**2 + (9.99523907 - 1)**2 + ......

Я пытался сделать что-то вроде этого:

count = 0
for i in list:
    sum = 0
    count += 1
    for j in range(len(i)):
        sum += (i[j] - primary[j])**2
    result[count] = sum

Iв конечном итоге с ошибкой индекса списка, любые предложения о том, как это сделать:

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018
listl= [[20.20458675 ,17.14946271 , 2.78568516 , 5.8363439 , 14.00318441 ,11.96825089]
, [ 3.89675236 , 9.99523907, 13.0328716 , 18.10551237, 22.11318234 ,-0.30354959]]

primary = [0, 1, 0, 0, 0, 1]
for i in listl:
    print(sum(map(lambda x:(x[0]-x[1])**2,zip(primary,i))))

ВЫХОД

1027.2451246961205
1084.4563999396066
0 голосов
/ 16 ноября 2018

Вы можете сделать это с помощью numpy:

import numpy as np
arrList = np.array(lst) # Don't use 'list' as variable name
arrPri = np.array(primary)
x, y = np.sum((arrList-arrPri)**2, axis=1)
# x:
# array([408.22532574, 260.80514582,   7.76004181,  34.06291012,
#    196.08917362, 120.30252759])
# y:
# array([ 15.18467896,  80.91432593, 169.85574214, 327.80957818,
#    488.9928332 ,   1.69924153])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...