scipy.io.

mmwrite#

scipy.io.mmwrite(цель, a, комментарий=None, field=None, точность=None, симметрия='AUTO')[источник]#

Записывает разреженный или плотный массив a в файл формата Matrix Market цель.

Параметры:
цельstr или file-like

Имя файла Matrix Market (расширение .mtx) или объект, подобный файлу.

aподобный массиву

Разреженный или плотный двумерный массив.

комментарийstr, optional

Комментарии, которые будут добавлены в начало файла Matrix Market.

fieldNone или str, опционально

Либо 'real', 'complex', 'pattern', или 'integer'.

точностьNone или int, опционально

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

симметрияNone или str, опционально

Либо 'AUTO', 'general', 'symmetric', 'skew-symmetric', или 'hermitian'. Если symmetry равен None, тип симметрии 'a' определяется его значениями. Если symmetry равен 'AUTO', тип симметрии 'a' либо определяется, либо устанавливается в 'general' по усмотрению mmwrite.

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

Примечания

Изменено в версии 1.12.0: Реализация на C++.

Примеры

>>> from io import BytesIO
>>> import numpy as np
>>> from scipy.sparse import coo_array
>>> from scipy.io import mmwrite

Записать небольшой массив NumPy в файл матричного рынка. Файл будет записан в 'array' формат.

>>> a = np.array([[1.0, 0, 0, 0], [0, 2.5, 0, 6.25]])
>>> target = BytesIO()
>>> mmwrite(target, a)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array real general
%
2 4
1
0
0
2.5
0
0
0
6.25

Добавить комментарий в выходной файл и установить точность на 3.

>>> target = BytesIO()
>>> mmwrite(target, a, comment='\n Some test data.\n', precision=3)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array real general
%
% Some test data.
%
2 4
1.00e+00
0.00e+00
0.00e+00
2.50e+00
0.00e+00
0.00e+00
0.00e+00
6.25e+00

Преобразовать в разреженную матрицу перед вызовом mmwrite. Это приведет к тому, что формат вывода будет 'coordinate' вместо 'array'.

>>> target = BytesIO()
>>> mmwrite(target, coo_array(a), precision=3)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix coordinate real general
%
2 4 3
1 1 1.00e+00
2 2 2.50e+00
2 4 6.25e+00

Запись комплексной эрмитовой матрицы в файл формата matrix market. Обратите внимание, что в файл фактически записываются только шесть значений; остальные значения подразумеваются симметрией.

>>> z = np.array([[3, 1+2j, 4-3j], [1-2j, 1, -5j], [4+3j, 5j, 2.5]])
>>> z
array([[ 3. +0.j,  1. +2.j,  4. -3.j],
       [ 1. -2.j,  1. +0.j, -0. -5.j],
       [ 4. +3.j,  0. +5.j,  2.5+0.j]])
>>> target = BytesIO()
>>> mmwrite(target, z, precision=2)
>>> print(target.getvalue().decode('latin1'))
%%MatrixMarket matrix array complex hermitian
%
3 3
3.0e+00 0.0e+00
1.0e+00 -2.0e+00
4.0e+00 3.0e+00
1.0e+00 0.0e+00
0.0e+00 5.0e+00
2.5e+00 0.0e+00

Этот метод использует многопоточность. Количество потоков по умолчанию равно количеству процессоров в системе. Используйте threadpoolctl переопределить:

>>> import threadpoolctl
>>>
>>> target = BytesIO()
>>> with threadpoolctl.threadpool_limits(limits=2):
...     mmwrite(target, a)