Как сложить каждую строчку матрицы и вектор?

Не могу сложить каждую строку матрицы с вектором. Не понимаю, что делаю не так. Сначала считываю их с таблицы Excel, потом хочу сложить и снова записать.

Выводит ошибку

list index out of range

Я знаю, что это за ошибка, но не понимаю , как исправить, так как уже по-разному пробовала.

import openpyxl as opx
import cv2
import win32com
import win32com.client
import numpy as np
from openpyxl.styles import PatternFill
from openpyxl.styles import Font, Fill
from openpyxl.styles import colors
from openpyxl.styles.borders import Border, Side

def logic():
delta_aoa2 = []
delta_aoa2_1 = []
aoa_limit_m_018 = []
aoa_limit_m_018_1=[]
def excel_read2():
    Excel = win32com.client.Dispatch("Excel.Application")
    wb = Excel.Workbooks.Open(u'C:\\Users\\source\\DATA_MACH_0.18.xlsx')
    sh4 = wb.Worksheets('Лист4')
    sh2 = wb.Worksheets('Лист2')
    # sh = wb.ActiveSheet(3)
    # val1 = sh3.Cells(2,2).value
    for i in range(5):
        delta_aoa2.append([])
        for j in range(4):
            val4 = sh4.Cells(i+3,j+2).value
            delta_aoa2[i].append(val4)
            delta_aoa2_1=np.matrix(delta_aoa2)
    print(delta_aoa2_1)
    for i in range(4):
        val6 = sh2.Cells(i+3,2).value
        aoa_limit_m_018.append(val6)
        aoa_limit_m_018_1=np.matrix(aoa_limit_m_018)
    print(aoa_limit_m_018_1)
    wb.Save()

    wb.Close()
    Excel.Quit()
excel_read2()

#Сложение строк матрицы с вектором
aoa_limit_calc1 = []
def aoa_limit_calc_1():
    for i in range(5):
        aoa_limit_calc1.append([])
        for j in range(4):
            val7 = delta_aoa2_1[i][j]+aoa_limit_m_018_1[j]
            aoa_limit_calc1[i].append(val7)
print(aoa_limit_calc1)            
aoa_limit_calc_1()
#запись в таблицу
def excel_entry():
    wb = opx.load_workbook('source/DATA_MACH_0.18.xlsx',data_only = True)
    sh = wb['Лист5']
    for j in range(11):
        sh.cell(row = 4 , column = j+2).value = delta_aoa_sp[j]
       
    wb.save("result/DATA_MACH_0.18.xlsx")

excel_entry()

delta_aoa2 здесь:

    [[ 0.    0.    0.    0.  ]
     [-2.05 -2.    0.    0.  ]
     [-3.05 -3.   -1.   -1.  ]
     [-3.55 -3.5  -1.5  -2.  ]
     [-4.55 -4.4  -2.   -2.5 ]]

aoa_limit_m_018:

    [[ 0.  5. 24. 28.]]

Xочу получить матрицу aoa_limit_calc1:

    [[ 0.   5.   24.   28.  ]
     [-2.05 3.   24.   28.  ]
     [-3.05 2.   23.   27.  ]
     [-3.55 1.5  22.5  26.  ]
     [-4.55 0.6  22.   25.5 ]]


Ответы (2 шт):

Автор решения: strawdog

вам, возможно, просто нужен numpy.add():

import numpy as np

arr1 = np.arange(16).reshape(4,4)
arr2 = np.random.randint(100, 200, 4)
# arr1:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
# arr2:
# [198 112 122 195]
res = np.add(arr1, arr2)
# res:
# [[198 113 124 198]
#  [202 117 128 202]
#  [206 121 132 206]
#  [210 125 136 210]]
→ Ссылка
Автор решения: MaxU

Пример:

Исходные данные:

In [68]: m
Out[68]:
array([[ 0.  ,  0.  ,  0.  ,  0.  ],
       [-2.05, -2.  ,  0.  ,  0.  ],
       [-3.05, -3.  , -1.  , -1.  ],
       [-3.55, -3.5 , -1.5 , -2.  ],
       [-4.55, -4.4 , -2.  , -2.5 ]])

In [69]: v
Out[69]:
array([[ 0.],
       [ 5.],
       [24.],
       [28.]])

решение:

In [70]: res = m + v.ravel()

результат:

In [71]: res
Out[71]:
array([[ 0.  ,  5.  , 24.  , 28.  ],
       [-2.05,  3.  , 24.  , 28.  ],
       [-3.05,  2.  , 23.  , 27.  ],
       [-3.55,  1.5 , 22.5 , 26.  ],
       [-4.55,  0.6 , 22.  , 25.5 ]])
→ Ссылка