Среднее значение матрицы, умноженное на скалярный вектор - PullRequest
1 голос
/ 03 октября 2019
>>> a = np.arange(9)
>>> a.shape = (3,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> b = np.array([1,2,3,4])
>>> b
array([1, 2, 3, 4])
>>> c = np.empty((4,3,3))
>>> for i in range(len(c)):
...     c[i] = a*b[i]
... 
>>> c
array([[[ 0.,  1.,  2.],
        [ 3.,  4.,  5.],
        [ 6.,  7.,  8.]],

       [[ 0.,  2.,  4.],
        [ 6.,  8., 10.],
        [12., 14., 16.]],

       [[ 0.,  3.,  6.],
        [ 9., 12., 15.],
        [18., 21., 24.]],

       [[ 0.,  4.,  8.],
        [12., 16., 20.],
        [24., 28., 32.]]])
>>> np.mean(c,axis=0)
array([[ 0. ,  2.5,  5. ],
       [ 7.5, 10. , 12.5],
       [15. , 17.5, 20. ]])

У меня есть матрица a и скалярный вектор b. Я хочу получить среднее значение матрицы, умноженное на скалярный вектор. Теперь я должен построить переменную как промежуточную переменную. Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 03 октября 2019

Выше эквивалентно умножению a на среднее , равное b. В самом деле, мы можем просто определить это как:

>>> a * np.mean(b)
array([[ 0. ,  2.5,  5. ],
       [ 7.5, 10. , 12.5],
       [15. , 17.5, 20. ]])

Это работает, так как вы здесь каждый раз определяете подматрицу c<sub>k</sub> как c<sub>k</sub>=a&times;b<sub>k</sub>. Если позже вы вычислите среднее значение d из c, то мы знаем, что d<sub>ij</sub>=&sum;<sub>k</sub> a<sub>ij</sub>&times;b<sub>k</sub>/n. Но поскольку a<sub>ij</sub> не зависит от k, мы можем переписать это на d<sub>ij</sub>=a<sub>ij</sub>&times;&sum;<sub>k</sub> b<sub>k</sub>/n и, таким образом, получить среднее значение b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...