# Use Python Numeric Variables in MATLAB

This example shows how to use Python® numeric types in MATLAB®.

### Use Python Numeric Types in MATLAB

When calling a Python function that takes a numeric input argument, MATLAB converts double values into types that best represent the data to the Python language. For example, to call trigonometry functions in the Python `math` module, pass a MATLAB double value.

`pynum = py.math.radians(90)`
```pynum = 1.5708 ```

For functions that return Python `float` types, MATLAB automatically converts this type to double.

`class(pynum)`
```ans = 'double' ```

For Python functions returning integer types, MATLAB automatically converts this type to `int64`. For example, the `bit_length` function returns the number of bits necessary to represent an integer in binary as an `int` value.

`py.int(intmax).bit_length`
```ans = Python int with properties: denominator: [1×1 py.int] imag: [1×1 py.int] numerator: [1×1 py.int] real: [1×1 py.int] 31 ```

### Call Python Methods with Numeric `iterable` Arguments

The Python `math.fsum` function sums floating-point values in an `iterable` input argument. You can pass a MATLAB vector to this function. For example, open the MATLAB `patients.mat` data file and read the numeric array `Height`.

```load patients.mat class(Height)```
```ans = 'double' ```
`size(Height)`
```ans = 1×2 100 1 ```

When you pass this argument to Python, MATLAB automatically converts the numeric values to Python numeric values and Python iterates over the vector values.

`py.math.fsum(Height)`
```ans = 6707 ```

### Use Python `array` Types in MATLAB

Suppose that you have a Python function that returns the following Python `array.array` of type double.

`P = py.array.array('d', 1:5)`
```P = Python array: 1 2 3 4 5 Use details function to view the properties of the Python object. Use double function to convert to a MATLAB array. ```

To pass `P` to the MATLAB function `sum`, convert `P` to a MATLAB array of type double.

`sum(double(P))`
```ans = 15 ```

### Use Python Integer `array` Types in MATLAB

Suppose that you have a Python array of 8-byte signed integers. Call the Python `reverse` function on the array, then convert the result to a MATLAB array.

`arr = py.array.array('q',[int64(5),int64(1),int64(-5)])`
```arr = Python array: 5 1 -5 Use details function to view the properties of the Python object. Use int64 function to convert to a MATLAB array. ```
```arr.reverse A = int64(arr)```
```A = 1×3 int64 row vector -5 1 5 ```

### Default Numeric Types

By default, a number in MATLAB is a `double` type. By default, a number (without a fractional part) in Python is an integer type. This difference can cause confusion when passing numbers to Python functions.

For example, when you pass these MATLAB numbers to the Python `datetime` function, Python reads them as `float` types and displays an error:

`d = py.datetime.date(2014,12,31)`

`Python Error: TypeError: integer argument expected, got float`

To correct the error, explicitly convert each number to an integer type:

`d = py.datetime.date(int32(2014),int32(12),int32(31))`
```d = Python date with properties: day: [1×1 py.int] month: [1×1 py.int] year: [1×1 py.int] 2014-12-31 ```

### Why Do I See Properties When I Display a Number?

MATLAB displays all Python types as objects, which includes a list of object properties. For numeric types, MATLAB displays the expected output value on the last line.

`py.int(5)`
```ans = Python int with properties: denominator: [1×1 py.int] imag: [1×1 py.int] numerator: [1×1 py.int] real: [1×1 py.int] 5 ```