scipy.sparse.

diags#

scipy.sparse.diags(диагонали, смещения=0, shape=None, формат=None, dtype=None)[источник]#

Построить разреженную матрицу из диагоналей.

Предупреждение

Эта функция возвращает разреженную матрицу, а не разреженный массив. Рекомендуется использовать diags_array чтобы воспользоваться функциональностью разреженных массивов.

Параметры:
диагоналипоследовательность объектов, подобных массивам

Последовательность массивов, содержащих диагонали матрицы, соответствующие смещения.

смещенияпоследовательность int или int, опционально
Диагонали для установки (повторяющиеся смещения не допускаются):
  • k = 0 главная диагональ (по умолчанию)

  • k > 0 k-я верхняя диагональ

  • k < 0 k-я нижняя диагональ

shapetuple of int, optional

Форма результата. Если опущена, используется квадратная матрица достаточно большого размера, чтобы содержать диагонали.

формат{"dia", "csr", "csc", "lil", …}, опционально

Матричный формат результата. По умолчанию (format=None) возвращается подходящий разреженный матричный формат. Этот выбор может измениться в будущем.

dtypedtype, опционально

Тип данных матрицы.

Возвращает:
new_matrixdia_matrix

dia_matrix содержащий значения в диагонали смещение от главной диагонали как указано в смещения.

Смотрите также

spdiags

построение матрицы из диагоналей

diags_array

построить разреженный массив вместо разреженной матрицы

Примечания

Повторяющиеся диагональные смещения запрещены.

Результат из diags является разреженным эквивалентом:

np.diag(diagonals[0], offsets[0])
+ ...
+ np.diag(diagonals[k], offsets[k])

diags отличается от dia_matrix в том, как он обрабатывает внедиагональные элементы. В частности, dia_matrix предполагает, что входные данные включают заполнение (игнорируемые значения) в начале/конце строк для положительного/отрицательного смещения, в то время как diags предполагает, что входные данные не имеют заполнения. Каждое значение во входных данных диагонали используется.

Добавлено в версии 0.11.

Примеры

>>> from scipy.sparse import diags
>>> diagonals = [[1, 2, 3, 4], [1, 2, 3], [1, 2]]
>>> diags(diagonals, [0, -1, 2]).toarray()
array([[1., 0., 1., 0.],
       [1., 2., 0., 2.],
       [0., 2., 3., 0.],
       [0., 0., 3., 4.]])

Поддерживается трансляция скаляров (но необходимо указать форму):

>>> diags([1, -2, 1], [-1, 0, 1], shape=(4, 4)).toarray()
array([[-2.,  1.,  0.,  0.],
       [ 1., -2.,  1.,  0.],
       [ 0.,  1., -2.,  1.],
       [ 0.,  0.,  1., -2.]])

Если нужна только одна диагональ (как в numpy.diag), следующее также работает:

>>> diags([1, 2, 3], 1).toarray()
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  2.,  0.],
       [ 0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.]])