###

# (NumPy)

# dtype

Table of Contents

- dtype
  - synopsis
  - constructors
  - accessors
  - Example(s)

A dtype is an object describing the type of the elements of an ndarray

> `<boost/python/numpy/dtype.hpp>` contains the method calls necessary to generate a python object equivalent to a numpy.dtype from builtin C++ objects, as well as to create custom dtypes from user defined types

## synopsis

    namespace boost
    {
    namespace python
    {
    namespace numpy
    {

    class dtype : public object
    {
      static python::detail::new_reference convert(object::object_cref arg, bool align);
    public:

      // Convert an arbitrary Python object to a data-type descriptor object.
      template <typename T>
      explicit dtype(T arg, bool align=false);

      // Get the built-in numpy dtype associated with the given scalar template type.
      template <typename T> static dtype get_builtin();

      // Return the size of the data type in bytes.
      int get_itemsize() const;
    };

    }
    }
    }

## constructors

    template <typename T>
    explicit dtype(T arg, bool align=false)

Requirements:

`T` must be either :

- a built-in C++ typename convertible to object
- a valid python object or convertible to object

Effects: | Constructs an object from the supplied python object / convertible to object / builtin C++ data type
Throws: | Nothing

    template <typename T> static dtype get_builtin();

Requirements: | The typename supplied, `T` must be a builtin C++ type also supported by numpy
Returns: | Numpy dtype corresponding to builtin C++ type

## accessors

    int get_itemsize() const;

Returns: | the size of the data type in bytes.

## Example(s)

    namespace p = boost::python;
    namespace np = boost::python::numpy;

    np::dtype dtype = np::dtype::get_builtin<double>();
    p::tuple for_custom_dtype = p::make_tuple("ha",dtype);
    np::dtype custom_dtype = np::dtype(list_for_dtype);