Numpy Datatypes
There are two interrelated concepts regarding the “type” of NumPy ndarray items,
- The “type” provided by Python, that are the true Python objects extracted from the Python class hierarchy.
- The data-type(dtype) provided by the NumPy. The dtype object provides the specifications about how to interpret the memory for an item. It is an instance of a single dtype class. Every dtype object has a type attribute that specifies the Python object returned when the item is selected from the array.
NumPy Datatypes
Basic Type | Available NumPy Types | Description |
Boolean | bool | 1 byte in size |
Integer | int8, int16,int32,int64, int128,int | int defaults to the size of the int in C for the platform |
Unsigned Integer | unit8, uint16, uint32,uint64, uint128,unit | uint defaults to the size of the uint in C for the platform |
Float | float32, float64, float, longfloat | float is double-precision floating-point value(64-bits). longfloat for larger precision and platform dependent |
Complex | complex64,complex128, complex | for complex and real both parts, each is represented by the single-precision(32-bit) value, total 64-bits |
String | str, Unicode | unicode is always UTF32 |
Object | object | Represents item in NumPy array as Python object |
Records | void | arbitrary data structures stored in an array |
Built-in Scaler types
There are built-in data type objects available in NumPy, but user-defined new data-type objects can also be created.
The following is a list of available dtype and their representation symbol
- integer-i
- boolean-b
- unsigned integer-u
- float-f
- complex float-c
- timedelta-m
- datetime-M
- object-O
- string-S
- unicode string-U fixed chunk of memory for other types ( void )-V
Getting the dtype
import numpy as np nums = np.array([12,10,5,10]) strs = np.array(['pyhton','Java','C','C++']) flts = np.array([34.5,7.4,0.95]) b = np.array([True,True,False]) #dtypes print(nums.dtype) #int64 print(strs.dtype) #<U6 print(flts.dtype) #float64 print(b.dtype) #bool
Creating an array with defined dtype
The numpy.array() function can take an optional argument, dtype that makes us specify the expected dtype of the array items.
import numpy as np strs = np.array(['pyhton','Java','C','C++'], dtype='S') print(strs.dtype) #|S6
import numpy as np nums = np.array([15,20,25,30], dtype='i4') numssmall = np.array([15,20,25,30], dtype='i2') strs = np.array(['pyhton','Java','C','C++'], dtype='S2') print(nums.dtype) #|int32 print(numssmall.dtype) #int16 print(strs.dtype) #|S2
*The ValueError is raised if the array can not be converted into the specified dtype. For example,
import numpy as np nums = np.array([15,20,25,30,'message'], dtype='i') #ValueError
Modifying the dtype of an existing array
The easiest way to change the dtype of the existing array is to make a copy of the existing array using the astype() function and pass the dtype as a parameter.
import numpy as np fls = np.array([15.2,2.20,25.5,30.5]) nums=fls.astype('i') print(nums) #output [15 2 25 30]
OR
import numpy as np nums = np.array([12,0,15,20]) bls=nums.astype('bool') print(bls) #output [ True False True True]OR
import numpy as np nums = np.array([12,0,15,20]) strs=nums.astype('str') print(strs) #output ['12' '0' '15' '20']
Creating customized datatypes
We can create a structured array formed with customized datatypes very easily with dtype keyword in the array() method.
import numpy as np dtype = [('name', 'S10'), ('height', float), ('age', int)] values = [('Shiva', 1.8, 41), ('Akshar', 1.9, 38), ('Virat', 1.7, 38)] arr = np.array(values, dtype=dtype) #create a structured array print('=======Custom array======\n',arr) #output =======Custom array====== [(b'Shiva', 1.8, 41) (b'Akshar', 1.9, 38) (b'Virat', 1.7, 38)]