/NumPy 1.17

# numpy.find_common_type

`numpy.find_common_type(array_types, scalar_types)` [source]

Determine common type following standard coercion rules.

Parameters: `array_types : sequence` A list of dtypes or dtype convertible objects representing arrays. `scalar_types : sequence` A list of dtypes or dtype convertible objects representing scalars. `datatype : dtype` The common data type, which is the maximum of `array_types` ignoring `scalar_types`, unless the maximum of `scalar_types` is of a different kind (`dtype.kind`). If the kind is not understood, then None is returned.

#### Examples

```>>> np.find_common_type([], [np.int64, np.float32, complex])
dtype('complex128')
>>> np.find_common_type([np.int64, np.float32], [])
dtype('float64')
```

The standard casting rules ensure that a scalar cannot up-cast an array unless the scalar is of a fundamentally different kind of data (i.e. under a different hierarchy in the data type hierarchy) then the array:

```>>> np.find_common_type([np.float32], [np.int64, np.float64])
dtype('float32')
```

Complex is of a different type, so it up-casts the float in the `array_types` argument:

```>>> np.find_common_type([np.float32], [complex])
dtype('complex128')
```

Type specifier strings are convertible to dtypes and can therefore be used instead of dtypes:

```>>> np.find_common_type(['f4', 'f4', 'i4'], ['c8'])
dtype('complex128')
```