numpy.linalg.trace#

linalg.trace(x, /, *, offset=0, dtype=None)[源代码]#

返回矩阵(或矩阵堆栈)``x`` 沿指定对角线的和.

这个函数是与 Array API 兼容的,与 numpy.trace 不同.

参数:
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])

迹是根据最后两个轴计算的,作为2-d子数组.这种行为与 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