Умножение до публикации MultiMatrix с использованием Numpy - PullRequest
0 голосов
/ 31 мая 2018

Я хочу рассчитать дисперсию портфеля:

Предполагая, что у меня есть 2 актива с весами:

weights = np.array([.3,.7]).reshape(1,2)

И следующие 2 матрицы корреляции:

correl = np.array([[[1,.4],[.4,1]],[[1,.6],[.6,1]]])

Я хотел бы сделать вес x коррел [0] и вес х коррел [1] за один шаг

Есть ли способ выбрать ось тензора (2,2,2) для кратногоподматрицы?

1 Ответ

0 голосов
/ 31 мая 2018

Оператор умножения матриц @ рассматривает более чем двухмерные массивы как стеки матриц, поэтому все, что вам нужно сделать, это

>>> weights @ correl
array([[[0.58, 0.82]],

       [[0.72, 0.88]]])
>>> 
# one-matrix-at-a-time for reference
>>> weights @ correl[0]
array([[0.58, 0.82]])
>>> weights @ correl[1]
array([[0.72, 0.88]])
...