matlab
Python® пакет обеспечивает классы массивов, чтобы представлять массивы MATLAB® числовые типы как переменные Python. Другие типы MATLAB также поддерживаются, как перечислено в Данных о Передаче к MATLAB из Python.
Можно создать числовые массивы MATLAB на сеансе Python путем вызова конструкторов от matlab
Пакет Python (например, matlab.double
, matlab.int32
). Имя конструктора указывает на MATLAB числовой тип. Можно передать массивы MATLAB как входные параметры к функциям MATLAB, названным из Python. Когда функция MATLAB возвращает числовой массив как выходной аргумент, массив возвращен в Python.
Можно инициализировать массив дополнительным initializer
входной параметр, который содержит числа. initializer
аргумент должен быть типом последовательности Python, таким как список или кортеж. Дополнительный size
входной параметр устанавливает размер инициализированного массива. Чтобы создать многомерные массивы, задайте initializer
содержать несколько последовательностей чисел или задавать size
быть многомерным. Можно создать массив MATLAB комплексных чисел путем установки дополнительного is_complex
аргумент ключевого слова к True
. mlarray
модуль предоставляет перечисленных в таблице конструкторов Array MATLAB.
Класс от | Вызов конструктора в Python | MATLAB числовой тип |
---|---|---|
|
matlab.double( initializer=None, size=None, is_complex=False) | Двойная точность |
|
matlab.single( initializer=None, size=None, is_complex=False) | Одинарная точность |
|
matlab.int8( initializer=None, size=None, is_complex=False) | 8-битное целое число со знаком |
|
matlab.int16( initializer=None, size=None, is_complex=False) | 16-битное целое число со знаком |
|
matlab.int32( initializer=None, size=None, is_complex=False) | 32-битное целое число со знаком |
|
matlab.int64( initializer=None, size=None, is_complex=False) | 64-битное целое число со знаком |
|
matlab.uint8( initializer=None, size=None, is_complex=False) | 8-битное беззнаковое целое |
|
matlab.uint16( initializer=None, size=None, is_complex=False) | 16-битное беззнаковое целое |
|
matlab.uint32( initializer=None, size=None, is_complex=False) | 32-битное беззнаковое целое |
|
matlab.uint64( initializer=None, size=None, is_complex=False) | 64-битное беззнаковое целое |
|
matlab.logical( initializer=None, size=None)[c] | Логический |
[a] В Python на Windows, [b] В Python на Windows, [c] Logicals не может быть превращен в массив комплексных чисел. |
Когда вы создаете массив с N
элементы, размер 1 N
потому что это - массив MATLAB.
import matlab A = matlab.int8([1,2,3,4,5]) print(A.size) (1, 5)
Инициализатор является списком Python, содержащим пять чисел. Размер MATLAB массивов 1 на 5, обозначается кортежем (1,5)
.
Все массивы MATLAB создаются с matlab
у конструкторов пакета есть атрибуты и методы, перечисленные в следующей таблице:
Атрибут или метод | Цель |
---|---|
| Размер массива, возвращенного как кортеж |
| Измените размерность массива, как задано последовательностью |
В Python можно создать многомерные массивы MATLAB любого числового типа. Используйте два списка Python плаваний, чтобы создать 2 5 массив типа double MATLAB.
import matlab A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A) [[1.0,2.0,3.0,4.0,5.0],[6.0,7.0,8.0,9.0,10.0]]
size
атрибут A
показывает, что это 2 5 массив.
print(A.size) (2, 5)
Можно индексировать в массивы MATLAB, как можно индексировать в списки Python и кортежи.
import matlab A = matlab.int8([1,2,3,4,5]) print(A[0]) [1,2,3,4,5]
Размером массива MATLAB является (1,5)
; поэтому, A[0]
[1,2,3,4,5]
. Индексируйте в массив, чтобы добраться 3.
print(A[0][2]) 3
Индексация Python основана на нуле. Когда вы получаете доступ к элементам массивов MATLAB на сеансе Python, используете основанную на нуле индексацию.
В этом примере показано, как индексировать в многомерный массив MATLAB.
A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A[1][2]) 8.0
Можно нарезать массивы MATLAB, как можно нарезать списки Python и кортежи.
import matlab A = matlab.int8([1,2,3,4,5]) print(A[0][1:4]) [2,3,4]
Можно присвоить данные срезу. Этот пример показывает присвоение от списка Python до массива.
A = matlab.double([[1,2,3,4],[5,6,7,8]]) A[0] = [10,20,30,40] print(A) [[10.0,20.0,30.0,40.0],[5.0,6.0,7.0,8.0]]
Можно присвоить данные из другого массива MATLAB, или из любого Python, повторяемого, который содержит числа.
Можно задать срезы для присвоения, как показано в этом примере.
A = matlab.int8([1,2,3,4,5,6,7,8]) A[0][2:4] = [30,40] A[0][6:8] = [70,80] print(A) [[1,2,30,40,5,6,70,80]]
Примечание
Разрезание массивов MATLAB ведет себя по-другому по сравнению с разрезанием списка Python. Разрезание массива MATLAB возвращает представление вместо мелкой копии.
Учитывая массив MATLAB и Python перечисляют с теми же значениями, присваивая срез результаты в различных результатах.
>>>mlarray = matlab.int32([[1,2],[3,4],[5,6]]) >>>py_list = [[1,2],[3,4],[5,6]] >>>mlarray[0] = mlarray[0][::-1] >>>py_list[0] = py_list[0][::-1] >>>mlarray[0] matlab.int32([[2,2],[3,4],[5,6]]) >>>py_list [[2,1],[3,4],[5,6]]
Можно изменить размерность массива MATLAB в Python с reshape
метод. Входной параметр, size
, должна быть последовательность, которая не изменяет число элементов в массиве. Используйте reshape
измениться 1 9 массив MATLAB к 3х3.
import matlab A = matlab.int8([1,2,3,4,5,6,7,8,9]) A.reshape((3,3)) print(A) [[1,4,7],[2,5,8],[3,6,9]]