Я думаю, вы ожидаете слишком много для Python.
var[0]
дает первый вектор (0,1)
, а не первые значения из всех векторов (0, 0.5, 1, 50)
.
var[1]
дает второй вектор (0.5, 0.5)
, а не вторые значения из всех векторов (1, 0.5, 0, 30)
И он не использует значения v3, v4
Попробуйте это, и вы получите ожидаемые значения
v1 = (0, 0.5, 1, 50)
v2 = (1, 0.5, 0, 30)
m, var = mean_and_var(v1, v2)
print("mean: ", m, "var: " , var)
РЕДАКТИРОВАТЬ: с помощью numpy
вы можете сделать что-то вроде этого
(я удалил все *
перед переменными)
def avr(inn): # * removed
#print('avr:', inn)
hap = 0
cnt = 0
for i in inn:
hap += i
cnt += 1
avrr = hap/cnt
return avrr
def varr(inn): # * removed
#print('varr:', inn)
jejob = 0
jegobhap = 0
cnt = 0
for i in inn:
cha = (i-avr(inn)) # * removed
jegob = cha**2
jegobhap += jegob
cnt += 1
varr_m = jegobhap/cnt
return varr_m
def mean_and_var(val):
x_axis_avr = avr(val[:,0]) # * removed
y_axis_avr = avr(val[:,1]) # * removed
x_axis_boon = varr(val[:,0]) # * removed
y_axis_boon = varr(val[:,1]) # * removed
return (x_axis_avr, y_axis_avr), (x_axis_boon, y_axis_boon)
import numpy as np
v1 = (0, 1)
v2 = (0.5, 0.5)
v3 = (1, 0)
v4 = (50, 30)
matrix = np.array([v1,v2,v3,v4])
#print(matrix)
m, var = mean_and_var(matrix)
print("mean: ", m, "var: " , var)