Операция трассировки в Python не формирует правильную форму массива - PullRequest
0 голосов
/ 13 февраля 2020

Я ищу, чтобы найти след матриц (используя Numpy) в функции, которую я определил в Python. Входные параметры tensor и tensor_transpose являются матрицами размера (N, 2,2) и извлекаются из файла VTK (N - довольно большое число и зависит от файла). Таким образом, A и B являются массивами (N, 2,2). Принимая трассировку каждого массива (сумма диагональных членов), должно быть возвращено одно значение для каждого массива. Таким образом, np.trace(A)**3)-(np.trace(B)**3 должно быть единственным числовым значением с массивом, имеющим форму (N, 1). Мой вывод, однако, не показывает этого, с возвращенной формой (2,).

Кто-нибудь может объяснить почему? Это проблема с функцией trace и есть ли решение?

import numpy as np

A=np.array(0.5*(tensor-tensor_transpose))
B=np.array(0.5*(tensor+tensor_transpose))
C=np.array(0.5*((np.trace(A)**3)-(np.trace(B)**3)))

print(A.shape)
print(B.shape)
print(C.shape)

#Output
#(60600, 2, 2)
#(60600, 2, 2)
#(2,)

1 Ответ

0 голосов
/ 13 февраля 2020

Может быть, вам нужно указать оси:

np.trace(A, axis1=1, axis2=2)
...