Метод trace
Метод trace класса ndarray вычисляет сумму элементов
главной диагонали массива. Для двумерных массивов это
традиционный след матрицы. Метод также поддерживает работу
с многомерными массивами и позволяет указать смещение
диагонали с помощью параметра offset.
Синтаксис
arr.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
Параметры метода:
-
offset- смещение диагонали (по умолчанию 0). Положительное значение - диагональ выше главной, отрицательное - ниже главной. -
axis1иaxis2- оси, по которым берется диагональ (для многомерных массивов). По умолчанию это первая и вторая оси. -
dtype- тип данных результата. Если не указан, тип определяется автоматически. -
out- массив для записи результата (необязательный).
Пример
Вычислим след квадратной матрицы 3x3:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.trace()
print(res)
Результат выполнения кода:
15
Пример
Используем смещение для вычисления суммы элементов диагонали, расположенной выше главной:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.trace(offset=1)
print(res)
Результат выполнения кода:
15
В данном случае суммируются элементы arr[0][1], arr[1][2] - это 2 + 6 = 8. Метод вернул 8, а не 15. Ошибка в примере, исправляем:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.trace(offset=1)
print(res)
Результат выполнения кода:
8
Пример
Вычислим след диагонали, расположенной ниже главной:
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = arr.trace(offset=-1)
print(res)
Результат выполнения кода:
12
Суммируются элементы arr[1][0] и arr[2][1] - это 4 и 8, в сумме дают 12.
Пример
Применим метод trace к трехмерному массиву,
указав оси для вычисления диагонали:
import numpy as np
arr = np.array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
res = arr.trace(axis1=0, axis2=1)
print(res)
Результат выполнения кода:
[ 8 12]
Метод вычислил сумму элементов вдоль диагонали между осями 0 и 1 для каждого слоя по оси 2.
Пример
Укажем тип данных для результата с помощью параметра
dtype:
import numpy as np
arr = np.array([[1.2, 2.3],
[3.4, 4.5]])
res = arr.trace(dtype=np.int32)
print(res)
Результат выполнения кода:
5