Data type Object (dtype) in NumPy Python (original) (raw)
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
Python
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 :