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)