Data type Object (dtype) in NumPy Python
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
import numpy as np
dt = np.dtype([( 'name' , np.unicode_, 16 ), ( 'grades' , np.float64, ( 2 ,))])
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:
int16
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
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
import numpy as np
dt = np.dtype([( 'name' , np.unicode_, 16 ), ( 'grades' , np.float64, ( 2 ,))])
print (dt[ 'grades' ])
print (dt[ 'name' ])
|
Output:
('<f8', (2,))
Python
import numpy as np
dt = np.dtype([( 'name' , np.unicode_, 16 ), ( 'grades' , np.float64, ( 2 ,))])
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 :
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...