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 参数描述的数据类型。

另请参见

numpy.trace

示例

>>> 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