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 столбцов. Вы можете получить такое поведение с помощью этого параметра. Это влияет только на высокие матрицы.
См. также
Примечания
Введено в версии 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]])
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.fill_diagonal.html