主要内容

从 Python 在 MATLAB 与 Python 之间传递数据

R2026b

当您将 MATLAB® 数据返回到 Python® 时,MATLAB Engine API for Python 将数据转换为等效的 Python 数据类型。MATLAB 引擎还会将传入的 Python 数据转换为 MATLAB 数据类型。

如果您从 Python 应用程序调用 MATLAB REST 函数服务,则此处显示的数据类型转换并非全部受支持。请改为参阅在 Python 和 MATLAB REST 函数服务之间传递数据。

将数据从 MATLAB 传递到 Python

当您将数据从 MATLAB 传递到 Python 时,无论是直接传递还是作为 Python 中的 MATLAB 函数的输出传递,MATLAB 都会将数据转换为等效的 Python 数据类型。

MATLAB 输出参量类型
(除非另有说明,否则均为标量)

生成的 Python 数据类型

数值数组

matlab 数值数组对象
请参阅MATLAB 数组作为 Python 变量。

double
single

float

复数(任意数值类型)

complex

int8, int16, int32, int64
uint8, uint16, uint32, uint64

int

NaN

float('nan')

Inf

float('inf')

logical

bool

char 数组(1×N 或 N×1)

str

string

str

string 数组(1×N 或 N×1)

str 的 list

struct

dict

元胞数组(1×N 或 N×1)

list

dictionary

matlab.dictionary

datetime

datetime.datetime

duration

datetime.timedelta

datetime 数组

numpy.datetime64 数组
如果 NumPy 模块在 Python 环境中不可用,MATLAB 会将 datetime 数组转换为 matlab.object。

duration 数组

numpy.timedelta 数组
如果 NumPy 模块在 Python 环境中不可用,MATLAB 会将 duration 数组转换为 matlab.object。

table
timetable

pandas.DataFrame
仅支持表中有一层嵌套。如果 Python Pandas 模块在 Python 环境中不可用,MATLAB 会将 table 或 timetable 转换为 matlab.object。

MATLAB 句柄对象(例如 containers.Map 类型)

matlab.object
MATLAB 返回对 matlab.object 的引用,而不是返回对象本身。您不能在 MATLAB 会话之间传递 matlab.object。

MATLAB 值对象(例如 categorical 类型)

matlab.object
您可以将值对象传递给 MATLAB 函数,但不能创建或修改值对象。

不支持的 MATLAB 数据类型

除了表中注明的例外情况外,MATLAB 不会将以下 MATLAB 数据类型转换为 Python 数据类型:

  • char 数组(M×N)

  • string 数组(M×N)

  • 元胞数组(M×N)

  • 稀疏数组

  • struct 数组

  • 非 MATLAB 生成的对象(例如 Java® 对象)

  • 函数句柄

将数据从 Python 传递到 MATLAB

当您将数据从 Python 传递到 MATLAB 时,无论是直接传递还是作为 Python 中的 MATLAB 函数的输入参量传递,MATLAB 引擎都会将数据转换为等效的 MATLAB 数据类型。

Python 数据类型

生成的 MATLAB 数据类型
(除非另有说明,否则均为标量)

matlab 数值数组对象

数值数组
请参阅MATLAB 数组作为 Python 变量。

支持缓冲区协议的 Python 对象,例如 memoryview、array.array 或 NumPy ndarray

数值数组

float

double

complex

复数 double

int

int64

float('nan')
numpy.nan

NaN

float('inf')
numpy.inf

Inf

bool

logical

str

char

bytearray

uint8 数组

bytes

uint8 数组

list

cell 数组

set

cell 数组

tuple

cell 数组

dict

struct
dict 键必须符合特定规范。请参阅Use MATLAB Dictionaries in Python。

matlab.dictionary

dictionary
matlab.dictionary 键和值必须满足特定设定。MATLAB 使用此表中的映射转换 matlab.dictionary 对象中的数据,例外情况是 str 数据转换为 string。请参阅Use MATLAB Dictionaries in Python。

datetime.datetime
numpy.datetime64 标量

datetime
请参阅How MATLAB Handles Datetime and Duration Types in Python。

datetime.timedelta
numpy.timedelta64 标量

duration
请参阅How MATLAB Handles Datetime and Duration Types in Python。

numpy.datetime64 数组

datetime 数组
请参阅How MATLAB Handles Datetime and Duration Types in Python。

numpy.timedelta64 数组

duration 数组
请参阅How MATLAB Handles Datetime and Duration Types in Python。

pandas.DataFrame

table
仅支持表中有一层嵌套。请参阅Use MATLAB Tables and Timetables in Python。

具有 datetime 列的 pandas.DataFrame

timetable
仅支持时间表中有一层嵌套。请参阅Use MATLAB Tables and Timetables in Python。

除 dict 之外的支持映射协议的 Python 对象(例如 collections.OrderedDict)

dictionary

matlab.object

当您将没有显式转换规则的 MATLAB 对象传递给 Python 时,MATLAB 会将其作为 matlab.object 传递。您可以将 matlab.object 返回到 MATLAB,在这种情况下,它会被视为原始 MATLAB 对象。

不支持的 Python 数据类型

除了表中注明的例外情况外,MATLAB 不会将以下 Python 数据类型转换为 MATLAB 数据类型:

  • Python 类 (module.type) 对象

  • None 对象

  • enum 类型

另请参阅

主题