Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm trung bình và phương sai kết hợp của hai chuỗi số trong Python


Giả sử chúng ta có hai chuỗi số A1 và A2 có kích thước lần lượt là b và a. Chúng ta cần tìm trung bình và phương sai của chuỗi kết hợp.

Ví dụ: A1 = [24, 46, 35, 79, 13, 77, 35] và A2 = [66, 68, 35, 24, 46], thì đầu ra sẽ là: Mean = [44.1429, 47.8], sd = [548.694, 294.56], combined mean = 45.6667, d1_square = 2.322, d2_square = 4.5511, combined_var = 446.056.

Giải thuật

Các bước thực hiện:

  • Định nghĩa hàm mean(arr) trả về trung bình của mảng.
  • Định nghĩa hàm sd(arr, n) tính phương sai (variance) của mảng.
  • Tính mean1, mean2 của A1, A2.
  • Tính sd1, sd2 của A1, A2.
  • Tính combinedMean = (n*mean1 + m*mean2) / (n + m).
  • Tính d1_square = (mean1 - combinedMean)^2, d2_square = (mean2 - combinedMean)^2.
  • Tính combined_var = (n*(sd1 + d1_square) + m*(sd2 + d2_square)) / (n + m).

Ví dụ

def mean(arr):
    return sum(arr)/len(arr)

def sd(arr, n):
    sum = 0
    for i in range(n):
        sum += (arr[i] - mean(arr)) * (arr[i] - mean(arr))
    sdd = sum / n
    return sdd

def combinedVariance(A1, A2):
    n = len(A1)
    m = len(A2)
    mean1 = mean(A1)
    mean2 = mean(A2)
    print("mean_1:", round(mean1, 2), "mean_2:", round(mean2, 2))
    sd1 = sd(A1, n)
    sd2 = sd(A2, m)
    print("sd_1:", round(sd1, 2), "sd_2:", round(sd2, 2))
    combinedMean = (n * mean1 + m * mean2) / (n + m)
    print("Combined Mean:", round(combinedMean, 2))
    d1_square = (mean1 - combinedMean) ** 2
    d2_square = (mean2 - combinedMean) ** 2
    print("d1_square:", round(d1_square, 2), "d2_square:", round(d2_square, 2))
    comb_var = (n * (sd1 + d1_square) + m * (sd2 + d2_square)) / (n + m)
    print("Combined Variance:", round(comb_var, 2))

A1 = [24, 46, 35, 79, 13, 77, 35]
A2 = [66, 68, 35, 24, 46]
combinedVariance(A1, A2)

Đầu vào

[24, 46, 35, 79, 13, 77, 35], [66, 68, 35, 24, 46]

Đầu ra

mean_1: 44.14 mean_2: 47.8 sd_1: 548.69 sd_2: 294.56 Combined Mean: 45.67 d1_square: 2.32 d2_square: 4.55 Combined Variance: 446.06