Related Articles

# Data type Object (dtype) in NumPy Python

• Difficulty Level : Medium
• Last Updated : 11 Aug, 2021

Every ndarray has an associated data type (dtype) object. This data type object (dtype) informs us about the layout of the array. This means it gives us information about:

• Type of the data (integer, float, Python object, etc.)
• Size of the data (number of bytes)
• The byte order of the data (little-endian or big-endian)
• If the data type is a sub-array, what is its shape and data type?

The values of a ndarray are stored in a buffer which can be thought of as a contiguous block of memory bytes. So how these bytes will be interpreted is given by the dtype object.

1. Constructing a data type (dtype) object: A data type object is an instance of the NumPy.dtype class and it can be created using NumPy.dtype.

Parameters:

• obj: Object to be converted to a data-type object.
• align: bool, optional
Add padding to the fields to match what a C compiler would output for a similar C-struct.
• copy: bool, optional
Make a new copy of the data-type object. If False, the result may just be a reference to a built-in data-type object.

## Python

 `# Python Program to create a data type object``import` `numpy as np` `# np.int16 is converted into a data type object.``print``(np.dtype(np.int16))`

Output:

`int16`

## Python

 `# Python Program to create a data type object``# containing a 32 bit big-endian integer``import` `numpy as np` `# i4 represents integer of size 4 byte``# > represents big-endian byte ordering and < represents little-endian encoding.``# dt is a dtype object``dt ``=` `np.dtype(``'>i4'``)` `print``(``"Byte order is:"``,dt.byteorder)` `print``(``"Size is:"``,dt.itemsize)` `print``(``"Data type is:"``,dt.name)`

Output:

```Byte order is: >
Size is: 4
Name of data type is: int32```

The type specifier (i4 in the above case) can take different forms:

• b1, i1, i2, i4, i8, u1, u2, u4, u8, f2, f4, f8, c8, c16, a
(representing bytes, ints, unsigned ints, floats, complex and
fixed-length strings of specified byte lengths)
• int8,…,uint8,…,float16, float32, float64, complex64, complex128
(this time with bit sizes)

Note:

`dtype is different from type. `

## Python

 `# Python program to differentiate``# between type and dtype.``import` `numpy as np` `a ``=` `np.array([``1``])` `print``(``"type is: "``,``type``(a))``print``(``"dtype is: "``,a.dtype)`

Output:

```type is:
dtype is:  int32```

2. Data type Objects with Structured Arrays: Data type objects are useful for creating structured arrays.  A structured array is one that contains different types of data. Structured arrays can be accessed with the help of fields.
A field is like specifying a name to the object. In the case of structured arrays, the dtype object will also be structured.

## Python

 `# Python program for demonstrating``# the use of fields``import` `numpy as np` `# A structured data type containing a 16-character string (in field ‘name’) ``# and a sub-array of two 64-bit floating-point number (in field ‘grades’):` `dt ``=` `np.dtype([(``'name'``, np.unicode_, ``16``), (``'grades'``, np.float64, (``2``,))])` `# Data type of object with field grades``print``(dt[``'grades'``])` `# Data type of object with field name ``print``(dt[``'name'``])`

Output:

`('<f8', (2,))`

## Python

 `# Python program to demonstrate ``# the use of data type object with structured array.``import` `numpy as np` `dt ``=` `np.dtype([(``'name'``, np.unicode_, ``16``), (``'grades'``, np.float64, (``2``,))])` `# x is a structured array with names and marks of students.``# Data type of name of the student is np.unicode_ and ``# data type of marks is np.float(64)``x ``=` `np.array([(``'Sarah'``, (``8.0``, ``7.0``)), (``'John'``, (``6.0``, ``7.0``))], dtype``=``dt)` `print``(x[``1``])``print``(``"Grades of John are: "``,x[``1``][``'grades'``])``print``(``"Names are: "``,x[``'name'``])`

Output:

```('John', [ 6.,  7.])
Grades of John are:  [ 6.  7.]
Names are:  ['Sarah' 'John']```

References :

This article is contributed by Ayushi Asthana. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.