Метод diag_indices() возвращает индексы для доступа к главной диагонали массива. Таким образом, возвращается кортеж индексов, которые можно использовать для доступа к главной диагонали массива a с размерами и формой a.ndim >= 2(n, n, …, n).
Что такое функция np.diag_indices() в Python?
Метод np.diag_indices() — это библиотечная функция Numpy, которая возвращает индексы главной диагонали в виде кортежей в Python. Эти индексы в дальнейшем используются для доступа к главной диагонали массива с минимальной размерностью 2. Для a.ndim = 2 это обычная диагональ, а для a.ndim > 2 это набор индексов для доступа к a[i, i , …, i] для i = [0..n-1].
Синтаксис
|
1 |
numpy.diag_indices(n, ndim=2) |
Параметры
- n:(int)
Размер по каждому измерению массивов, для которых требуются индексы главной диагонали.
- ndim:(int,optional)
Количество измерений. По умолчанию это 2.
Возвращаемое значение
Метод возвращает кортеж, состоящий из индексов главной диагонали массива. Этот кортеж в дальнейшем можно использовать для доступа к элементам главной диагонали.
Примеры
Пример 1.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py import numpy as np # create an array of size 5x5 n = np.diag_indices(5) print(n) a = np.arange(16).reshape(4, 4) print('intial array:', a) d = np.diag_indices(4) a[d] = 25 print('new array:', a) |
Выход:
|
1 2 3 4 5 6 7 8 9 |
python3 app.py(array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])) intial array: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] new array: [[25 1 2 3] [ 4 25 6 7] [ 8 9 25 11] [12 13 14 25]] |
- Пример 2.
Напишем программу, которая печатает индексы главной диагонали массива NxN и превращает его диагональный элемент в m.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# app.py import numpy as np n = input("enter the size of array:") data = int(n) print("indices of main diagonal:") array = np.diag_indices(data) print(array) a = np.arange(data * data).reshape(data, data) print("old array: \n", a) d = np.diag_indices(data) m = input("enter the element to insert on main diagonal:") a[d] = m print("new array: \n", a) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
python3 app.py enter the size of array:4 indices of main diagonal:(array([0, 1, 2, 3]), array([0, 1, 2, 3])) old array: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]] enter the element to insert on main diagonal:25 new array: [[25 1 2 3] [ 4 25 6 7] [ 8 9 25 11] [12 13 14 25]] |
Здесь мы получаем индексы главной диагонали массива NXN и используем эти индексы для изменения значений главной диагонали.
Мы ввели разные размеры массивов и значение, которое будет вставлено по главной диагонали. Мы создаем разные массивы NxN и вводим значения от 0 до(N^2)-1. Сначала выводим индексы главной диагонали, затем массив, а в конце выводим измененный массив.
