Python 中的跟踪操作未形成正确的数组形状

Trace Operation in Python not Forming Correct Array Shape

我正在寻找我在 Python 中定义的函数中的矩阵轨迹(使用 Numpy)。输入参数 tensortensor_transpose 都是大小为 (N,2,2) 的矩阵,并且是从 VTK 文件中提取的(N 是一个相当大的数字,并且因文件而异)。所以 AB 都是 (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,)

也许您需要指定坐标轴:

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