MATLAB to Python Data Type Mapping
When calling a Python® function, MATLAB® converts MATLAB data into types that best represent the data to the Python language.
Pass Scalar Values to Python
MATLAB Input Argument Type — | Resulting Python
| Examples |
---|---|---|
|
| Use Python Numeric Variables in MATLAB |
|
|
z = complex(1,2); py.cmath.polar(z) ans = Python tuple with no properties. (2.23606797749979, 1.1071487177940904) |
|
| |
|
| |
|
| |
|
| |
|
| Use Python str Variables in MATLAB |
|
|
py.list({string(missing),'Value'}) ans = Python list with no properties. [None, 'Value'] |
|
| |
Structure |
| Use Python dict Variables in MATLAB |
Python object —
|
| |
function handle
|
| Pass Python Function to Python map Function |
Pass Vectors to Python
MATLAB Input Argument Type —
| Resulting Python Type |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pass Matrices and Multidimensional Arrays to Python
The Python language provides a protocol for accessing memory buffers like the data stored in a MATLAB array. MATLAB implements this Python buffer protocol for MATLAB arrays so that you can read MATLAB arrays directly from Python code, running in the same process as MATLAB, without copying data.
Many Python functions directly use the MATLAB array from Python without converting it to a native Python type. Some functions might require a specific type, such as
numpy.ndarray
, or might modify data in the array. These functions might
accept the MATLAB array and copy the data into the required type. Other functions might display an
error if you do not pass the required type. To pass data to these functions, first create the
required Python type from the MATLAB data, then pass it to the Python function. For example, to create array p
to pass to a
Python function that requires data of type numpy.array
, type:
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.
MATLAB sparse arrays are not supported in Python. See Unsupported MATLAB Types.
Troubleshooting Argument Errors
If a Python function expects a specific
Python multidimensional array type such as
numpy.ndarray
, then MATLAB displays a message with tips about
how to proceed. If the problem might be due to passing a matrix or a
multidimensional array as an argument, then do the following.
Check the documentation for the Python function and find out the expected type for the argument.
Create a Python object of that type in MATLAB and pass that to the Python function.
For example, suppose that the following code returns an error.
a = [1 2; 3 4]; py.pyfunc(a)
If the documentation of pyfunc
specifies that the expected type is
numpy.ndarray
, then try this
conversion:
py.pyfunc(numpy.ndarray(a))
If the error persists, then determine the root cause by checking for additional information in the Python exception.
Automatically Convert Python Types to MATLAB Types
MATLAB automatically converts these data types returned from Python functions into MATLAB types. To convert other types, see Explicitly Convert Python Types to MATLAB Types.
Python Return Type, as Displayed in Python | Resulting MATLAB Type — Scalar |
---|---|
|
|
| Complex |
|
|
|
|
All other Python types — | Python object —
|
Explicitly Convert Python Types to MATLAB Types
If the output of a Python function implements the Python buffer protocol, such as numpy.ndarray
, and it is numeric or
logical, then MATLAB displays:
The actual Python type
The underlying data
The corresponding MATLAB conversion function. Use this function to fully convert the Python object to a MATLAB array.
Use these MATLAB functions to convert Python data types to MATLAB types.
Python Return Type or Protocol, as Displayed in MATLAB | MATLAB Conversion Function | Examples |
---|---|---|
|
| Use Python str Variables in MATLAB |
|
| |
|
| |
Object with |
|
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' |
|
| |
|
| |
|
| |
You
can convert | Numeric
functions: | Use Python Numeric Variables in MATLAB, for example, Use Python Integer array Types in MATLAB. |
|
| Use Python list Variables in MATLAB |
Mapping protocol; for example, |
| Use Python dict Variables in MATLAB |
For example, a Python function returns this array p
:
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.
You can convert it to a MATLAB matrix P
by typing:
P = double(p)
P = 3×3 8 1 6 3 5 7 4 9 2
If you need specific information about the Python properties of p
, type:
details(p)
py.numpy.ndarray handle with properties: T: [1×1 py.numpy.ndarray] base: [1×1 py.NoneType] 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
If the Python module provides content in its __doc__
attribute, then
MATLAB links to that information.
Unsupported MATLAB Types
These MATLAB types are not supported in Python.
Multidimensional
char
orcell
arraysStructure arrays
Sparse arrays
categorical
,
table
,
containers.Map
,
datetime
typesMATLAB objects
meta.class
(py
.class
)