2.1. Numba Types¶
2.1.1. Basic Types¶
“Basic” Numba types can be expressed through simple expressions. The symbols below refer to attributes of the main numba module (so if you read “boolean”, it means that symbol can be accessed as numba.boolean).
The following table contains the elementary numeric types currently defined by Numba, and their various aliases.
|boolean||b1||represented as a byte|
|uint8, byte||u1||8-bit unsigned byte|
|uint16||u2||16-bit unsigned integer|
|uint32||u4||32-bit unsigned integer|
|uint64||u8||64-bit unsigned integer|
|int8, char||i1||8-bit signed byte|
|int16||i2||16-bit signed integer|
|int32||i4||32-bit signed integer|
|int64||i8||64-bit signed integer|
|complex64||c8||single-precision complex number|
|complex128||c16||double-precision complex number|
The easy way to declare array types is to subscript an elementary type according to the number of dimensions. For example a 1-dimension single-precision array:
>>> numba.float32[:] array(float32, 1d, A, nonconst)
or a 3-dimension array of the same underlying type:
>>> numba.float32[:,:,:] array(float32, 3d, A, nonconst)
However, this is not enough to express all possibilities, such as a particular contiguity or a structured array.
2.1.2. Advanced Types¶
For more advanced declarations, you have to use constructors provided by Numba.
The APIs documented here are not guaranteed to be stable. Unless necessary, it is recommended to let Numba infer argument types by using the signature-less variant of @jit.
220.127.116.11. Numpy scalars¶
Non-trivial scalars such as structured types need to be constructed programmatically.
Create a Numba type corresponding to the given Numpy dtype:
>>> struct_dtype = np.dtype([('row', np.float64), ('col', np.float64)]) >>> numba.from_dtype(struct_dtype) Record([('row', '<f8'), ('col', '<f8')])
- class numba.types.NPDatetime(unit)¶
Create a Numba type for Numpy datetimes of the given unit. unit should be a string amongst the codes recognized by Numpy (e.g. Y, M, D, etc.).
- class numba.types.Array(dtype, ndim, layout)¶
Create an array type. dtype should be a Numba type. ndim is the number of dimensions of the array (a positive integer). layout is a string giving the layout of the array: A means any layout, C means C-contiguous and F means Fortran-contiguous.