Python 中的跟踪操作未形成正确的数组形状
Trace Operation in Python not Forming Correct Array Shape
我正在寻找我在 Python 中定义的函数中的矩阵轨迹(使用 Numpy)。输入参数 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,)
也许您需要指定坐标轴:
np.trace(A, axis1=1, axis2=2)
我正在寻找我在 Python 中定义的函数中的矩阵轨迹(使用 Numpy)。输入参数 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,)
也许您需要指定坐标轴:
np.trace(A, axis1=1, axis2=2)