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.]])