Написание пользовательской функции Умножьте среднее значение x, y

1

Написание пользовательской функции Умножьте среднее значение x, y

x=[17,13,12,15,16,14,16,16,18,19]
y=[94,73,59,80,93,85,66,79,77,91]

У меня есть два списка, и я хочу рассчитать его среднее. После получения двух средних я хочу умножить

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

def X_bar_y_bar(x,y):
    x1=[]
    y1=[]
    ab=[]
    for i in x:
        result_x1=i-sum(x)/float(len(x))
        result_x1=result_x
        x1.append(result_x1)

    for k in y:
        result_y1=k-sum(y)/float(len(y))
        result_y1=result_y
        y1.append(result_y1)
    total=0
    for i in x1:
        for j in y1:
            r1=i*j
            total = +r1
            print("{:.2f}".format(total))

Желаемый результат:

20.02
17.42
74.52
-0.18
5.32
-5.48
-0.28
-6.48
38.42
  • 0
    Вы не можете использовать NumPy?
Теги:
python-3.x

2 ответа

0

Если вам не нужно использовать 'numpy', то вы можете использовать следующий код:

x=[17,13,12,15,16,14,16,16,18,19]
y=[94,73,59,80,93,85,66,79,77,91]

def X_bar_y_bar(x,y):
    xave = sum(x)/float(len(x))
    yave = sum(y)/float(len(y))

    for i in range(len(x)):
        result=((x[i]-xave)*(y[i]-yave))
        print("{:.2f}".format(result))

X_bar_y_bar(x,y)

Несколько изменений по сравнению с вашим кодом:

1) среднее значение рассчитывается один раз, вы должны вывести его из цикла. 2) присваивание 'result_x1 = result_x' ничего не делает, пропустите это

  • 0
    Спасибо U3.1415926
0

Вы должны действительно использовать NumPy для таких вещей:

import numpy as np

x=np.array([17,13,12,15,16,14,16,16,18,19])
y=np.array([94,73,59,80,93,85,66,79,77,91])

(x - np.mean(x)) * (y - np.mean(y))
# array([20.02, 17.42, 74.52, -0.18,  5.32, -8.48, -5.48, -0.28, -6.48, 38.42])
  • 0
    Спасибо Nils Werner за ваше решение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню