Онлайн умножение двух матриц: Онлайн калькулятор. Умножение матриц

Разреженные матрицы (scipy.sparse) — SciPy v1.10.1 Manual

SciPy Пакет двумерных разреженных массивов для числовых данных.

Примечание

Этот пакет переключается на интерфейс массива, совместимый с Массивы NumPy из старого матричного интерфейса. Мы рекомендуем это вы используете объекты массива ( bsr_array , coo_array и т. д.) для все новые работы.

При использовании интерфейса массива обратите внимание, что:

  • x * y больше не выполняет умножение матриц, но поэлементное умножение (как и в случае с массивами NumPy). К заставить код работать как с массивами, так и с матрицами, используйте x @ y для умножение матриц.

  • Операции, такие как sum , которые раньше производили плотные матрицы, теперь создавать массивы, поведение умножения которых отличается аналогичным образом.

  • Разреженные массивы в настоящее время должны быть двумерными. Это также означает что все

    операций нарезки над этими объектами должны производить двумерные результаты, иначе они приведут к ошибке. Этот будет рассмотрено в будущей версии.

Строительные коммунальные услуги ( глаз , крон , рандом , диагс и т.д.) еще не портированы, но их результаты можно завернуть в массивы:

 A = csr_array(eye(3))
 

Содержимое

Классы разреженного массива

bsr_array (arg1[ shape, dtype, copy, blocksize])

Блочный массив разреженных строк

coo_array (arg1[ форма, dtype, копия])

Разреженный массив в формате COOrdinate.

csc_array (arg1[ shape, dtype, copy])

Сжатый массив разреженных столбцов

csr_array (arg1[ shape, dtype, copy])

Сжатый массив разреженных строк

dia_array (arg1[ shape, dtype, copy])

Разреженный массив с диагональным хранилищем

dok_array (arg1[ shape, dtype, copy])

Словарь ключей на основе разреженного массива.

lil_array (arg1[ shape, dtype, copy])

Разреженный массив LIst of List на основе строк

Классы разреженных матриц

bsr_matrix (arg1[ shape, dtype, copy, blocksize])

Блочная матрица разреженных строк

coo_matrix (arg1[ shape, dtype, copy])

Разреженная матрица в формате COOrdinate.

csc_matrix (arg1[ shape, dtype, copy])

Сжатая матрица разреженных столбцов

csr_matrix (arg1[ shape, dtype, copy])

Сжатая матрица разреженных строк

dia_matrix (arg1[ shape, dtype, copy])

Разреженная матрица с памятью DIAgonal

dok_matrix (arg1[ shape, dtype, copy])

Словарь ключей на основе разреженной матрицы.

lil_matrix (arg1[ shape, dtype, copy])

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

spmatrix ([maxprint])

Этот класс обеспечивает базовый класс для всех разреженных матриц.

Функции

Построение разреженных матриц:

глаз (m[ n, k, dtype, формат])

Разреженная матрица с единицами по диагонали

идентификатор (n[ dtype, формат])

Идентификационная матрица в разреженном формате

крон (A, B[ формат])

произведение Кронекера разреженных матриц A и B

крон (A, B[ формат])

сумма Кронекера разреженных матриц A и B

диаг. (диагонали[ смещения, форма, формат, dtype])

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

spdiags (данные, диаг [ m, n, формат])

Возвращает разреженную матрицу из диагоналей.

block_diag (mats[ format, dtype])

Построить блочно-диагональную разреженную матрицу из предоставленных матриц.

трил (A[ k, формат])

Возврат нижней треугольной части матрицы в разреженном формате

триу (A[ k, формат])

Вернуть верхнюю треугольную часть матрицы в разреженном формате

bmat (блоки [ формат, dtype])

Построить разреженную матрицу из разреженных подблоков

hstack (блоки [ формат, dtype])

Складывать разреженные матрицы горизонтально (по столбцам)

vstack (блоки [ формат, dtype])

Стек разреженных матриц вертикально (построчно)

ранд (m, n[ плотность, формат, dtype, . ..])

Создать разреженную матрицу заданной формы и плотности с равномерно распределенными значениями.

случайное (m, n[ плотность, формат, dtype, …])

Создать разреженную матрицу заданной формы и плотности со случайно распределенными значениями.

Сохранение и загрузка разреженных матриц:

save_npz (файл, матрица [ сжатый])

Сохранение разреженной матрицы в файл в формате .npz .

load_npz (файл)

Загрузить разреженную матрицу из файла в формате .npz .

Инструменты для разреженных матриц:

найти (А)

Возвращает индексы и значения ненулевых элементов матрицы

Идентификация разреженных матриц:

(x)

Является ли x типом разреженной матрицы?

исспматрица (х)

Является ли x типом разреженной матрицы?

isspmatrix_csc (х)

Имеет ли x тип csc_matrix?

isspmatrix_csr (х)

Имеет ли x тип csr_matrix?

isspmatrix_bsr (х)

Является ли x типом bsr_matrix?

isspmatrix_lil (х)

Имеет ли x тип lil_matrix?

isspmatrix_dok (x)

Имеет ли x тип dok_matrix?

isspmatrix_coo (x)

Является ли x типом coo_matrix?

isspmatrix_dia (х)

Имеет ли x тип dia_matrix?

Субмодули

csgraph

Подпрограммы сжатого разреженного графа (scipy. sparse.csgraph)

линальг

Разреженная линейная алгебра (scipy.sparse.linalg)

Исключения

SparseEfficiencyWarning

Разреженное предупреждение

Информация по использованию

Доступно семь типов разреженных матриц:

  1. csc_matrix: формат сжатого разреженного столбца

  2. csr_matrix: формат сжатой разреженной строки

  3. bsr_matrix: Блокировать формат разреженной строки

  4. lil_matrix: Формат списка списков

  5. dok_matrix: Формат словаря ключей

  6. coo_matrix: формат COOrdinate (он же IJV, триплетный формат)

  7. dia_matrix: формат DIAgonal

Для эффективного построения матрицы используйте либо dok_matrix, либо lil_matrix. Класс lil_matrix поддерживает базовые срезы и причудливую индексацию с помощью аналогичный синтаксис для массивов NumPy. Как показано ниже, формат COO также может быть использован для эффективного построения матриц. Несмотря на их сходство с массивами NumPy, это настоятельно не рекомендуется использовать NumPy работает непосредственно с этими матрицами, потому что NumPy может неправильно преобразовать их для вычислений, что приводит к неожиданным (и неправильным) результатам. Если вы хотите применить функцию NumPy к этим матрицам, сначала проверьте, есть ли в SciPy свою собственную реализацию для данного класса разреженных матриц, или

преобразовать разреженной матрицы в массив NumPy (например, используя метод toarray() метода class) перед применением метода.

Для выполнения таких операций, как умножение или инверсия, сначала преобразовать матрицу в формат CSC или CSR. Формат lil_matrix на основе строк, поэтому преобразование в CSR эффективно, тогда как преобразование в CSC меньше.

Все преобразования между форматами CSR, CSC и COO эффективны, операции с линейным временем.

Матричный векторный продукт

Чтобы сделать векторное произведение между разреженной матрицей и вектором, просто используйте метод матрицы

точек , как описано в строке документации:

 >>> импортировать numpy как np
>>> из scipy.sparse импортировать csr_matrix
>>> A = csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]])
>>> v = np.массив ([1, 0, -1])
>>> А.точка(v)
массив([1, -3, -1], dtype=int64)
 

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

Начиная с NumPy 1.7, np.dot не знает о разреженных матрицах, поэтому его использование приведет к неожиданным результатам или ошибкам. Вместо этого сначала следует получить соответствующий плотный массив:

 >>> np.dot(A.toarray(), v)
массив([1, -3, -1], dtype=int64)
 

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

Формат CSR особенно подходит для быстрых матричных векторных произведений.

Пример 1

Создайте lil_matrix размером 1000×1000 и добавьте к ней несколько значений:

 >>> из scipy.sparse импортировать lil_matrix
>>> из scipy.sparse.linalg импортировать spsolve
>>> из numpy.linalg import решить, норма
>>> из numpy.random импортировать ранд
 
 >>> A = lil_matrix((1000, 1000))
>>> A[0, :100] = ранд(100)
>>> А[1, 100:200] = А[0, :100]
>>> A.setdiag(ранд(1000))
 

Теперь преобразуйте его в формат CSR и решите A x = b для x:

 >>> A = A.tocsr()
>>> b = ранд(1000)
>>> х = spsolve(A, b)
 

Преобразуйте его в плотную матрицу и решите, и проверьте, что результат то же самое:

 >>> x_ = решить(A.toarray(), b)
 

Теперь мы можем вычислить норму ошибки с помощью:

 >>> ошибка = норма(х-х_)
>>> ошибка < 1e-10
Истинный
 

Он должен быть маленьким 🙂

Пример 2

Построить матрицу в формате COO:

 >>> из scipy import sparse
>>> из массива импорта numpy
>>> Я = массив([0,3,1,0])
>>> J = массив ([0,3,1,2])
>>> V = массив([4,5,7,9])
>>> A = sparse. coo_matrix((V,(I,J)),shape=(4,4))
 

Обратите внимание, что индексы не нужно сортировать.

Повторяющиеся (i,j) записи суммируются при преобразовании в CSR или CSC.

 >>> I = массив([0,0,1,3,1,0,0])
>>> J = массив ([0,2,1,3,1,0,0])
>>> V = массив ([1,1,1,1,1,1,1])
>>> B = sparse.coo_matrix((V,(I,J)),shape=(4,4)).tocsr()
 

Это полезно для построения конечно-элементных матриц жесткости и масс.

Дополнительная информация

Индексы столбцов CSR не обязательно сортируются. Аналогично для строки CSC индексы. Используйте методы .sorted_indices() и .sort_indices(), когда требуются отсортированные индексы (например, при передаче данных в другие библиотеки).

Матрицы ch_3 31.10.06.pmd

%PDF-1.3 % 245 0 объект >>>]/ON[293 0 R]/Порядок[]/RBGroups[]>>/OCGs[293 0 R]>>/Страницы 229 0 R/Тип/Каталог>> эндообъект 246 0 объект >/Шрифт>>>/Поля 225 0 R>> эндообъект 242 0 объект >поток приложение/pdf

  • асер
  • Матрицы ch_3 31.
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *