Реализуйте средневзвешенное значение между двумя 2D-массивами - PullRequest
2 голосов
/ 26 мая 2020

Предположим, я хочу взять средневзвешенное значение между двумя 2D-массивами, скажем, x и y, где я хочу придать y большее значение, чем x. Я понимаю, что numpy.average делает это, но я хотел бы увидеть пример, который работает для моего случая.

Заранее благодарю.

1 Ответ

2 голосов
/ 26 мая 2020

Если x и y имеют одинаковую форму, вы можете оценить средневзвешенное значение между каждой парой элементов (по одному на массив), а затем их среднее значение.

import numpy as np

x = np.array([100,200,300])
y = np.array([1,2,3])

print(
  np.mean(
    np.average([x,y], weights=[1,100], axis=0)
  )
)

Или для общих c массивов вы можете использовать определение взвешенной суммы:

import numpy as np

x = np.array([100,200,300])
y = np.array([1,2,3])

x_w = 1
y_w = 100

print(
  (np.sum(x)*x_w + np.sum(y)*y_w) / (x.size*x_w + y.size*y_w)
)
...