MATLAB - отображение типов данных Python

При вызове Python® функция, MATLAB® преобразует данные MATLAB в типы, которые лучше всего представляют данные в язык Python.

Передайте скалярные значения Python

Входной параметр MATLAB -
Только скалярные значения

Результат на языке Python py. Напечатать

Примеры

double
single

float

Используйте числовые переменные Python в MATLAB

Комплекс single
Комплекс double

complex

z = complex(1,2);
py.cmath.polar(z)
ans = 
  Python tuple with no properties.

    (2.23606797749979, 1.1071487177940904)

int8
uint8
int16
uint16
int32

int

 

uint32
int64
uint64

int
long (только версия 2.7)

 

NaN

float("nan")

 

Inf

float("inf")

 

string скаляр
char вектор

str

Используйте переменные Python str в MATLAB

<missing> значение в string

None

py.list({string(missing),'Value'})
ans = 
  Python list with no properties.

    [None, 'Value']

logical

bool

 

Структура

dict

Используйте переменные Python dict в MATLAB

Объект Python - py. type

type

 

указатель на функцию @py. module. function, только для функций Python

module. function

Передайте функцию Python в функцию Python Map

Передайте векторы в Python

Входной параметр MATLAB -
1-by- N Вектор

Получившийся тип Python

double

array.array('d')

single

array.array('f')

int8

array.array('b')

uint8

array.array('B')

int16

array.array('h')

uint16

array.array('H')

int32

array.array('i')

uint32

array.array('I')

int64 (Не поддерживается для Python 2.7 в Windows®)

array.array('q')

uint64 (Не поддерживается для Python 2.7 в Windows)

array.array('Q')

logical

memoryview

char вектор
string скаляр

str

char массив, содержащий значения более 127 (только версия 2.7)

unicode

cell вектор

tuple

Передайте матрицы и многомерные массивы в Python

Когда вы передаете действительные числовые или логические массивы в функцию Python, MATLAB автоматически преобразует данные в memoryview Python объект. Если выход функции Python реализует протокол буфера Python и является действительным числовым или логическим, то MATLAB отображает:

  • Фактический тип Python

  • Базовые данные

  • Соответствующая функция преобразования MATLAB. Используйте эту функцию, чтобы полностью преобразовать объект Python в массив MATLAB.

Например, предположим, что вы вызываете функцию Python в модуле pyModule который возвращает переменную типа pyType с этими значениями:

p = 
  Python pyType:

     8     1     6
     3     5     7
     4     9     2

    Use details function to view the properties of the Python object.

    Use double function to convert to a MATLAB array.

Преобразование p в матрицу MATLAB P, тип:

P = double(p)
P = 3×3    
     8     1     6
     3     5     7
     4     9     2

Если вам нужна конкретная информация о свойствах Python p, тип:

details(p)
  py.pyModule.pyType handle with properties:

           T: [1×1 py.pyModule.pyType]
        base: [1×1 py.NoneType]
      ctypes: [1×1 py.pyModule.core._internal._ctypes]
        data: [1×3 py.memoryview]
       dtype: [1×1 py.pyModule.dtype]
       flags: [1×1 py.pyModule.flagsobj]
        flat: [1×1 py.pyModule.flatiter]
        imag: [1×1 py.pyModule.pyType]
    itemsize: [1×1 py.int]
      nbytes: [1×1 py.int]
        ndim: [1×1 py.int]
        real: [1×1 py.pyModule.pyType]
       shape: [1×2 py.tuple]
        size: [1×1 py.int]
     strides: [1×2 py.tuple]

  Methods, Events, Superclasses

Если модуль Python предоставляет содержимое в своих __doc__ атрибут, затем MATLAB ссылается на эту информацию.

Использование Python- memoryview объекты позволяют Python считать данные MATLAB, не делая копии данных MATLAB. Для получения информации о memoryview объекты и протокол буфера, поиск этих терминов в https://www.python.org/doc/.

Комплексные и разреженные массивы MATLAB не поддерживаются в Python. См. раздел Неподдерживаемые типы MATLAB.

Поиск и устранение проблем ошибок аргументов

Если функция Python ожидает определенного многомерного типа многомерного массива Python, то MATLAB отображает сообщение с советами о том, как продолжить. Если проблема может быть связана с передачей матрицы или многомерного массива в качестве аргумента, выполните следующее.

  1. Проверьте документацию на функцию Python и узнайте ожидаемый тип аргумента.

  2. Создайте объект Python этого типа в MATLAB и передайте его в функцию Python.

Например, предположим, что следующий код возвращает ошибку.

a = [1 2; 3 4];
py.pyfunc(a)

Если документация pyfunc указывает, что ожидаемый тип pyType, затем попробуйте это преобразование:

py.pyfunc(pyType(a))

Если ошибка повторяется, определите первопричину путем проверки дополнительной информации в исключении Python.

Автоматическое преобразование типов Python в типы MATLAB

MATLAB автоматически преобразует эти типы данных, возвращенные с Python, в типы MATLAB. Для преобразования других типов смотрите Явное преобразование типов Python в типы MATLAB.

Тип возврата Python, отображаемый на Python

Полученный тип MATLAB - Скаляр

float

double

complex

Комплекс double

int (только версия 2.7).

Для Python версий 3.x int, вы должны явно преобразовать. См. раздел Явное преобразование типов Python в типы MATLAB.

int64

bool

logical

Все другие типы Python - type

Объект Python - py. type

Явное преобразование типов Python в типы MATLAB

Используйте эти функции MATLAB для преобразования типов данных Python в типы MATLAB.

Тип возврата Python или протокол, как показано в MATLAB

Функция преобразования MATLAB

Примеры

py.str (версия 3.x)

string
char

Используйте переменные Python str в MATLAB

py.str (версия 2.7)

string
char
uint8

 

py.unicode

string
char

 

Объект с __str__ метод

char

py.help('datetime.date.__str__')
Help on wrapper_descriptor in datetime.date:

datetime.date.__str__ = __str__(self, /)
    Return str(self).
d = py.datetime.date(...
    int32(2020),int32(3),int32(4));
char(d)
ans = '2020-3-04'

py.bytes

uint8

 

py.int

double
или
int64

 

py.long

double
или
int64

 

py.array.array

Можно преобразовать py.array.array любого формата для требуемого типа MATLAB.

numeric
double
single
int8
uint8
int16
uint16
int32
uint32
int64
uint64

Используйте числовые переменные Python в MATLAB, для примера Используйте типы массивов Целого числа Python в MATLAB.

Протокол последовательности; для примера, py.list и py.tuple

cell

Используйте Переменные списка Python в MATLAB
Использование переменных кортежа Python в MATLAB

Протокол отображения; для примера, py.dict

struct

Используйте переменные Python dict в MATLAB

Неподдерживаемые типы MATLAB

Эти типы MATLAB не поддерживаются в Python.

  • Многомерный char или cell массивы

  • Массивы структур

  • Комплексные, скалярные целые числа или массивы

  • Разреженные массивы

  • categorical,
    table,
    containers.Map,
    datetime типы

  • Объекты MATLAB

  • meta.class (py. class)

Похожие темы