主要内容

MATLABPython数据类型映射

当调用Python时®MATLAB函数,®将MATLAB数据转换为最能表示Python语言数据的类型。

传递标量值到Python

MATLAB输入参数类型-
仅限标量值

产生的Pythonpy。类型

例子

(真正的)
(真正的)

浮动

在MATLAB中使用Python数值变量

(复杂的)
(复杂的)

复杂的

Z =复(1,2);py.cmath.polar (z)
ans =没有属性的Python元组。(2.23606797749979, 1.1071487177940904)

int8
uint8
int16
uint16
int32

int

uint32
int64
uint64

int
(仅限2.7版)

浮动(“nan”)

浮动(正)

字符串标量
字符向量

str

在MATLAB中使用Python str变量

< >失踪价值字符串

没有一个

py.list({字符串(丢失),“价值”})
ans =没有属性的Python列表。(没有,“价值”)

逻辑

保龄球

结构

dict

在MATLAB中使用Python dict变量

Python对象-py类型

类型

函数处理@py模块函数,到Python函数

模块函数

将Python函数传递给Python map函数

将向量传递给Python

MATLAB输入参数类型-
1——- - - - - -N向量

生成的Python类型

(真正的)

array.array (' d ')

(真正的)

array.array (f)

int8(真正的)

array.array (b)

uint8(真正的)

array.array (B)

int16(真正的)

array.array (' h ')

uint16(真正的)

array.array (' H ')

int32(真正的)

array.array(“我”)

uint32(真正的)

array.array(“我”)

int64(真实)- Windows万博1manbetx上的Python 2.7不支持®

array.array(问)

uint64(真实)- Windows万博1manbetx上的Python 2.7不支持

array.array(问)

(复杂的)
(复杂的)
int8(复杂的)
uint8(复杂的)
int16(复杂的)
uint16(复杂的)
int32(复杂的)
uint32(复杂的)

memoryview

逻辑

memoryview

字符向量
字符串标量

str

字符包含大于127值的数组(仅2.7版本)

unicode

细胞向量

元组

传递矩阵和多维数组Python

Python语言提供了访问内存缓冲区的协议,例如存储在MATLAB数组中的数据。MATLAB为MATLAB数组实现了此Python缓冲区协议,以便您可以直接从Python代码读取MATLAB数组,在与MATLAB相同的进程中运行,而无需复制数据。

许多Python函数直接使用来自Python的MATLAB数组,而不将其转换为本机Python类型。有些函数可能需要特定的类型,例如numpy.ndarray,或者可能修改数组中的数据。这些函数可以接受MATLAB数组并将数据复制到所需的类型。如果您没有传递所需的类型,其他函数可能会显示错误。要将数据传递给这些函数,首先从MATLAB数据创建所需的Python类型,然后将其传递给Python函数。例如,创建arrayp来传递给需要类型数据的Python函数numpy.array类型:

P = py.numpy.array(magic(3))
p = Python ndarray: 8 1 6 3 5 7 4 9 2使用details函数查看Python对象的属性。使用double函数转换为MATLAB数组。

Python中不支持MATLAB稀疏数组。万博1manbetx看到不支万博1manbetx持的MATLAB类型

故障排除参数错误

如果Python函数需要特定的Python多维数组类型,例如numpy.ndarray,然后MATLAB会显示一条消息,提示如何继续。如果问题可能是由于传递了一个矩阵或多维数组作为参数,那么请执行以下操作。

  1. 查看Python函数的文档,找出参数的预期类型。

  2. 在MATLAB中创建该类型的Python对象,并将其传递给Python函数。

例如,假设以下代码返回一个错误。

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

如果文件pyfunc指定期望的类型为numpy.ndarray,然后试试这个转换:

py.pyfunc (numpy.ndarray (a))

如果错误仍然存在,则通过检查Python异常中的其他信息来确定根本原因。

自动转换Python类型MATLAB类型

MATLAB自动将这些从Python函数返回的数据类型转换为MATLAB类型。要转换其他类型,请参见显式转换Python类型到MATLAB类型

Python返回类型,如Python中显示的

结果MATLAB类型-标量

浮动

复杂的

复杂的

int(仅2.7版)。

对于Python版本3.xint,必须显式转换。看到显式转换Python类型到MATLAB类型

int64

保龄球

逻辑

所有其他Python类型-类型

Python对象-py类型

显式转换Python类型MATLAB类型

如果Python函数的输出实现了Python缓冲区协议,例如numpy.ndarray,且为数值型或逻辑型,则MATLAB显示:

  • 实际的Python类型

  • 基础数据

  • 相应的MATLAB转换函数。使用此函数将Python对象完全转换为MATLAB数组。

使用这些MATLAB函数将Python数据类型转换为MATLAB类型。

返回类型或协议,在MATLAB中显示

MATLAB转换函数

例子

py.str(版本3. x)

字符串
字符

在MATLAB中使用Python str变量

py.str(版本2.7)

字符串
字符
uint8

py.unicode

字符串
字符

对象与__str__方法

字符

py.help (“datetime.date.__str__”
datetime中wrapper_descriptor的帮助。日期: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.int
py.long
py.float
py.bool

数值函数:


int8
uint8
int16
uint16
int32
uint32
int64
uint64

逻辑

py.bytes

uint8

py.array.array
py.numpy.ndarray
py.memoryview

你可以转换py.array.array任何格式的py.memoryview对象到您想要的MATLAB类型。

数值函数:


int8
uint8
int16
uint16
int32
uint32
int64
uint64

在MATLAB中使用Python数值变量例如,在MATLAB中使用Python整数数组类型。

py.list而且py.tuple



int8
uint8
int16
uint16
int32
uint32
int64
uint64
逻辑
字符串
细胞

在MATLAB中使用Python列表变量
在MATLAB中使用Python元组变量

有关更多信息,请参见转换列表或元组的元素错误

映射协议;例如,py.dict

结构体

在MATLAB中使用Python dict变量

例如,Python函数返回此数组p

p = Python ndarray: 8 1 6 3 5 7 4 9 2使用details函数查看Python对象的属性。使用double函数转换为MATLAB数组。

你可以把它转换成MATLAB矩阵P通过键入:

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

的Python属性的特定信息p类型:

细节(p)
带有属性的py.numpy.ndarray句柄:T: [1×1 py.numpy.ndarray。Ndarray] base: [1×1 py.]没有一个类型] ctypes: [1×1 py.numpy.core._internal._ctypes] data: [1×3 py.memoryview] dtype: [1×1 py.numpy.dtype[float64]] flags: [1×1 py.numpy.flagsobj] flat: [1×1 py.numpy.flatiter] imag: [1×1 py.numpy.ndarray] itemsize: [1×1 py.int] nbytes: [1×1 py.int] ndim: [1×1 py.int] real: [1×1 py.numpy.ndarray] shape: [1×2 py.tuple] size: [1×1 py.int] strides: [1×2 py.tuple] Methods, Events, Superclasses

如果Python模块在其__doc__属性,然后MATLAB链接到该信息。

请勿使用Python对象作为字典键

不能将Python对象作为关键参数传递给MATLAB字典函数的输入keyMatch函数。

不支万博1manbetx持的MATLAB类型

Python不支持这些MATLAB类型。万博1manbetx

  • 多维字符细胞数组

  • 结构数组

  • 稀疏阵列

  • 分类
    表格
    容器。地图
    datetime类型

  • MATLAB的对象

  • meta.classpy

相关的话题