numpy.linalg.trace#
- linalg.trace(x, /, *, offset=0, dtype=None)[source]#
返回矩阵(或矩阵堆栈)
x
指定对角线上的总和。与
numpy.trace
不同,此函数与数组 API 兼容。- 参数:
- x(…,M,N) array_like
输入数组,形状为 (…, M, N),其最内层的两个维度形成 MxN 矩阵。
- offsetint, 可选
指定相对于主对角线的非对角线偏移,其中
* offset = 0: the main diagonal. * offset > 0: off-diagonal above the main diagonal. * offset < 0: off-diagonal below the main diagonal.
- dtypedtype, 可选
返回数组的数据类型。
- 返回值:
- outndarray
包含轨迹的数组,其形状通过移除最后两个维度并存储最后数组维度中的轨迹来确定。例如,如果 x 的秩为 k 且形状为:(I, J, K, …, L, M, N),则输出数组的秩为 k-2 且形状为:(I, J, K, …, L),其中
out[i, j, k, ..., l] = trace(a[i, j, k, ..., l, :, :])
返回的数组必须具有如上所述的 dtype 参数描述的数据类型。
另请参见
示例
>>> np.linalg.trace(np.eye(3)) 3.0 >>> a = np.arange(8).reshape((2, 2, 2)) >>> np.linalg.trace(a) array([3, 11])
轨迹是使用最后两个轴作为二维子数组计算的。此行为与
numpy.trace
不同,后者默认使用前两个轴。>>> a = np.arange(24).reshape((3, 2, 2, 2)) >>> np.linalg.trace(a).shape (3, 2)
可以使用 offset 参数获取主对角线相邻的轨迹
>>> a = np.arange(9).reshape((3, 3)); a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.linalg.trace(a, offset=1) # First superdiagonal 6 >>> np.linalg.trace(a, offset=2) # Second superdiagonal 2 >>> np.linalg.trace(a, offset=-1) # First subdiagonal 10 >>> np.linalg.trace(a, offset=-2) # Second subdiagonal 6