Numpy - невозможно выполнить матричный продукт с 3 матрицами - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть 3 следующих матрицы:

      matrix1 = np.array(eval(der_input_LU[j]));
      submatrix1 = matrix1[0:100][0:4]
      matrix2 = invCrossMatrix
      matrix3 = np.array(eval(der_input_LU[l]));
      submatrix3 = matrix3[0:4][0:100];     

с формой каждого из них:

      print 'shape matrix1 = ', submatrix1.shape
      print 'shape matrix2 = ', matrix2.shape
      print 'shape matrix3 = ', submatrix3.shape

, которая печатает:

shape submatrix1 =  (4, 100)
shape matrix2 =  (4, 4)
shape submatrix3 =  (4, 100)

Я ищудля выполнения матричного произведения между этими 3 матрицами.Я пытался использовать np.linalg.multi_dot так:

matFinal = np.linalg.multi_dot([submatrix1,matrix2,submatrix3])

Но я получаю следующую ошибку:

invCrossMatrix =  [[ 2.76704670e-09  0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [ 0.00000000e+00  6.82633333e-06 -1.65769406e-19 -2.12753150e-12]
 [ 0.00000000e+00 -1.65769406e-19  6.82633333e-06 -3.31538864e-19]
 [ 0.00000000e+00 -2.12753150e-12 -3.31538864e-19  1.36526667e-05]]
Traceback (most recent call last):
  File "program1.py", line 1497, in <module>
    map(integ_LU_cross, g_LU(i))
  File "program1.py", line 1436, in integ_LU_cross
    function_A = aux_fun_LU_cross(way, ecs, I1[0], I1[1], I1[2])
  File "program1.py", line 1369, in aux_fun_LU_cross
    submatrix3 = matrix3[0:4][0:100];          
IndexError: too many indices for array

Как видите, я пытался соблюдать порядок: (100,4)*(4,4)*(4,100)но это не работает.

Соблюдаю ли я правильные размеры для использования функции multi_dot?Я не могу найти источник моей ошибки.

приветствуются любые предложения или замечания,

...