Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Pasar datos de MATLAB a Python

Cuando llama a una función de Python®, MATLAB® convierte los datos de MATLAB en tipos que representan mejor los datos en el lenguaje Python. Para obtener información sobre cómo usar datos de Python en MATLAB, consulte Handle Data Returned from Python Function.

Pasar valores de escalar a Python

Tipo de argumento de entrada de MATLAB —
solo valores de escalar

Tipo py. de Python resultante

Ejemplos

double (real)
single (real)

float

Use Python Numeric Variables in MATLAB

double (complejo)
single (complejo)

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

 

NaN

float("nan")

 

Inf

float("inf")

 

string escalar
char vector

str

Use Python str Variables in MATLAB

Valor <missing> en string

None

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

    [None, 'Value']

logical

bool

 

Estructura

dict

Utilizar variables dict de Python en MATLAB
datetime

py.datetime.datetime

Use MATLAB datetime Types with Python
duration

py.datetime.timedelta

Use MATLAB duration Types with Python

Objeto Python — py.type

type

 

Identificador de función @py.module.function, solo para funciones de Python

module.function

Pass Python Function to Python map Function

Pasar vectores a Python

Tipo de argumento de entrada de MATLAB —
vector de 1 por N

Tipo de Python resultante

double (real)

array.array('d')

single (real)

array.array('f')

int8 (real)

array.array('b')

uint8 (real)

array.array('B')

int16 (real)

array.array('h')

uint16 (real)

array.array('H')

int32 (real)

array.array('i')

uint32 (real)

array.array('I')

int64 (real)

array.array('q')

uint64 (real)

array.array('Q')

double (complejo)
single (complejo)
int8 (complejo)
uint8 (complejo)
int16 (complejo)
uint16 (complejo)
int32 (complejo)
uint32 (complejo)

memoryview

logical

memoryview

char vector
string escalar

str

cell vector

tuple

Pasar matrices y arreglos multidimensionales a Python

El lenguaje Python proporciona un protocolo para acceder a buffers de memoria como los datos almacenados en un arreglo de MATLAB. MATLAB implementa este protocolo de buffer de Python para arreglos de MATLAB para que pueda leer arreglos de MATLAB directamente desde el código de Python, que se ejecuta en el mismo proceso que MATLAB, sin copiar datos.

Muchas funciones de Python utilizan directamente el arreglo de MATLAB desde Python sin convertirlo a un tipo nativo de Python. Algunas funciones podrían requerir un tipo específico, como numpy.ndarray, o modificar datos del arreglo. Puede que estas funciones acepten el arreglo de MATLAB y copien los datos en el tipo necesario. Otras funciones podrían mostrar un error si no pasa el tipo que se requiere. Para pasar datos a estas funciones, cree primero el tipo necesario de Python a partir de los datos de MATLAB y, a continuación, páselo a la función de Python. Por ejemplo, para crear un arreglo p para pasar a una función de Python que requiere datos de tipo numpy.array, escriba:

p = py.numpy.array(magic(3))
p = 

  Python ndarray:

     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.

Python no admite arreglos dispersos de MATLAB. Consulte Unsupported MATLAB Types.

Resolución de problemas relacionados con errores de argumentos

Si una función de Python espera un arreglo multidimensional específico de Python como numpy.ndarray, MATLAB muestra un mensaje con consejos sobre cómo proceder. Si el problema pudiera ser debido a que pasa una matriz o un arreglo multidimensional como argumento, haga lo siguiente.

  1. Revise la documentación para la función de Python y encuentre el tipo esperado para el argumento.

  2. Cree un objeto de Python de ese tipo en MATLAB y páselo a la función de Python.

Por ejemplo, supongamos que el siguiente código devuelve un error.

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

Si la documentación de pyfunc especifica que el tipo esperado es numpy.ndarray, pruebe esta conversión:

py.pyfunc(numpy.ndarray(a))

Si el error persiste, determine la causa raíz buscando información adicional en la excepción de Python.

Tipos de MATLAB no compatibles

Python no admite estos tipos de MATLAB.

  • Arreglos multidimensionales char o cell

  • Arreglos de estructuras

  • Arreglos dispersos

  • Tipos categorical

  • Tipos table

  • Tipos containers.Map

  • Objetos de MATLAB

  • meta.class (py.class)

Ejemplos relacionados

Más acerca de