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)
 Byte order of the data (littleendian or bigendian)
 If the data type is a subarray, what is its shape and data type.
The values of an 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.

Constructing a data type (dtype) object : Data type object is an instance of 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 Cstruct.  copy : bool, optional
Make a new copy of the datatype object. If False, the result may just be a reference to a builtin datatype object.
# 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 Program to create a data type object
# containing a 32 bit bigendian integer
import
numpy as np
# i4 represents integer of size 4 byte
# > represents bigendian byte ordering and < represents littleendian 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 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 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
 Data type Objects with Structured Arrays : Data type objects are useful for creating structured arrays. A structured array is the one which 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 case of structured arrays the dtype object will also be structured.# Python program for demonstrating
# the use of fields
import
numpy as np
# A structured data type containing a 16character string (in field ‘name’)
# and a subarray of two 64bit floatingpoint 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 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 :
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
leave a comment
0 Comments