Spec-Zone.ru › NumPy 1.14

numpy.fill_diagonal

numpy.fill_diagonal(a, val, wrap=False) [source]

Заполните главную диагональ заданного массива любой размерности.

Для массива a с a.ndim >= 2, диагональ — это список расположений с индексами a[i, ..., i], все одинаковые. Эта функция изменяет входной массив на месте, она не возвращает значение.

Параметры:

a : массив, как минимум 2-мерный.

Массив, диагональ которого должна быть заполнена, он изменяется на месте.

val : скаляр

Значение, которое нужно записать на диагонали, его тип должен быть совместим с типом массива a.

wrap : bool

Для высоких матриц в NumPy версии до 1.6.2 диагональ «заворачивалась» после N столбцов. Вы можете получить это поведение с помощью этого параметра. Это влияет только на высокие матрицы.

См. также

diag_indices, diag_indices_from

Примечания

Введено в версии 1.4.0.

Это функциональность может быть получена с помощью diag_indices, но внутренне эта версия использует гораздо более быструю реализацию, которая никогда не создаёт индексы и использует простые срезы.

Примеры

>>> a = np.zeros((3, 3), int)
>>> np.fill_diagonal(a, 5)
>>> a
array([[5, 0, 0],
       [0, 5, 0],
       [0, 0, 5]])

Такая же функция может работать с 4-мерным массивом:

>>> a = np.zeros((3, 3, 3, 3), int)
>>> np.fill_diagonal(a, 4)

Мы показываем только несколько блоков для ясности:

>>> a[0, 0]
array([[4, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])
>>> a[1, 1]
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 0]])
>>> a[2, 2]
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 4]])

Параметр wrap влияет только на высокие матрицы:

>>> # tall matrices no wrap
>>> a = np.zeros((5, 3),int)
>>> fill_diagonal(a, 4)
>>> a
array([[4, 0, 0],
       [0, 4, 0],
       [0, 0, 4],
       [0, 0, 0],
       [0, 0, 0]])
>>> # tall matrices wrap
>>> a = np.zeros((5, 3),int)
>>> fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0],
       [0, 4, 0],
       [0, 0, 4],
       [0, 0, 0],
       [4, 0, 0]])
>>> # wide matrices
>>> a = np.zeros((3, 5),int)
>>> fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0, 0, 0],
       [0, 4, 0, 0, 0],
       [0, 0, 4, 0, 0]])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.fill_diagonal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API