scipy.sparse.

diags_array#

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

Создать разреженный массив из диагоналей.

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

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

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

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

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

shapetuple of int, optional

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

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

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

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

Тип данных массива.

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

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

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

dia_array

конструктор для разреженного формата DIAgonal.

Примечания

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

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

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

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

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

Примеры

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

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

>>> diags_array([1, -2, 1], offsets=[-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_array([1, 2, 3], offsets=1).toarray()
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  2.,  0.],
       [ 0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.]])